[udev] fix device mount point.
authorhschang <chang@dev3>
Thu, 16 Nov 2017 09:57:45 +0000 (18:57 +0900)
committerhschang <chang@dev3>
Thu, 16 Nov 2017 09:59:33 +0000 (18:59 +0900)
meta-openvuplus/recipes-core/udev/udev-182/automount.py
meta-openvuplus/recipes-core/udev/udev_182.bbappend

index 01695b6..22f81e2 100755 (executable)
@@ -1,10 +1,25 @@
 #!/usr/bin/python
 import os
 import sys
+import glob
 
 def readFile(fn):
        return open(fn, "r").read()
 
+def getLabelFromDevName(dev_kernel):
+       for label in glob.glob("/dev/disk/by-label/*"):
+               realPath = os.path.realpath(label)
+               if realPath == dev_kernel:
+                       return os.path.basename(label)
+       return None
+
+def getModel(dev_base):
+       model = None
+       modelpath = "/sys/block/%s/device/model" % dev_base
+       if os.access(modelpath, os.F_OK):
+               model = open(modelpath, "r").read().strip().replace(' ','-')
+       return model
+
 def isMountedByDevName(devName):
        ismounted = False
        mounts = file('/proc/mounts').read().split('\n')
@@ -19,6 +34,13 @@ def isMountedByDevName(devName):
 
        return ismounted
 
+def isUsbDevice(dev_base):
+       phyPath = os.path.realpath('/sys/block/' + dev_base)
+       for x in glob.glob("/sys/bus/usb/devices/usb*"):
+               if phyPath.find(os.path.realpath(x)) != -1:
+                       return True
+       return False
+
 def automount():
        kernel = sys.argv[1]
        dev_kernel = os.path.join("/dev/", kernel)
@@ -26,30 +48,31 @@ def automount():
        dev_base = os.path.basename(kernel)[:-1]
        removable=readFile("/sys/block/%s/removable" % dev_base).strip() == "1"
        dev_real_path = os.path.realpath("/sys/block/%s/device" % dev_base)
-       external = False
-       if (dev_real_path.find("pci") != -1) or (dev_real_path.find("ahci") != -1) or (dev_real_path.find("sata") != -1):
-               external = True
 
        if isMountedByDevName(dev_kernel):
                return
 
-       deviceType = "hdd"
-#      if removable or external:
-       if removable:
-               deviceType = "usb"
-
+       mountPoint = None
        if dev_index == "1":
-               mountPoint = "/media/" + deviceType
+               usbDevice = removable or isUsbDevice(dev_base)
+               if not usbDevice:
+                       mountPoint = "/media/hdd"
 
-               if os.path.ismount(mountPoint):
-                       mountPoint = "/media/" + kernel
+       if (mountPoint == None) or (os.path.ismount(mountPoint)):
+               label = getLabelFromDevName(dev_kernel)
+               if label:
+                       mountPoint = "/media/" + label
+                       if dev_index and dev_index != '1':
+                               mountPoint += "_%s" % dev_index
 
-               elif not os.access(mountPoint, os.F_OK):
-                       os.mkdir(mountPoint)
-                       if not os.access(mountPoint, os.F_OK):
-                               mountPoint = "/media/" + kernel
+       if (mountPoint == None) or (os.path.ismount(mountPoint)):
+               model = getModel(dev_base)
+               if model:
+                       mountPoint = "/media/" + model
+                       if dev_index and dev_index != '1':
+                               mountPoint += "_%s" % dev_index
 
-       else:
+       if (mountPoint == None) or (os.path.ismount(mountPoint)):
                mountPoint = "/media/" + kernel
 
        if not os.access(mountPoint, os.F_OK):
index 4e285d8..f6a4d97 100644 (file)
@@ -1,4 +1,4 @@
-PR .= "-vuplus3"
+PR .= "-vuplus4"
 
 SRC_URI += " \
        file://99_vuplus.rules \