diff mbox

[v2] udev-extraconf: update mount.sh to use /run/media instead of /media

Message ID 1396324451-26983-1-git-send-email-denis@denix.org
State New
Headers show

Commit Message

Denys Dmytriyenko April 1, 2014, 3:54 a.m. UTC
From: Denys Dmytriyenko <denys@ti.com>

This is done to work around the issue of auto-mounting block devices
(i.e. SD cards) when root filesystem is still in read-only mode and
creating /media/<device> mount-points by udev is not possible. That
is due to udev (/etc/rcS.d/S03udev) getting started earlier than
checkroot (/etc/rcS.d/S10checkroot.sh) gets a chance to re-mount the
rootfs as read-write.

Although, canonical FHS specifies /media/<device> as a mount point
for removable media devices, the latest 2.3 version was released in
2004 and since then FreeDesktop/udisks and other tools adopted the
new /run/media/<user>/<device> location. That was done to overcome
read-only rootfs limitation, since /run is usually a tmpfs mounted
partition, plus avoid name-clash between users.

For our embedded systems environment we assume single-user operation
and hence simplify mount point to just /run/media/<device>. But for
proper per-user mounting to /run/media/<user>/<device>, some sort of
session management is required along with the tool like udisks, that
is out of scope of this simple udev-based auto-mounting.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
---
v2 - drop PR, bump PV, elaborate on session/user mounting option

 meta/recipes-core/udev/udev-extraconf/mount.sh             | 14 +++++++-------
 .../udev/{udev-extraconf_1.0.bb => udev-extraconf_1.1.bb}  |  2 --
 2 files changed, 7 insertions(+), 9 deletions(-)
 rename meta/recipes-core/udev/{udev-extraconf_1.0.bb => udev-extraconf_1.1.bb} (99%)

Comments

Denys Dmytriyenko April 6, 2014, 10:46 p.m. UTC | #1
ping

On Mon, Mar 31, 2014 at 11:54:11PM -0400, Denys Dmytriyenko wrote:
> From: Denys Dmytriyenko <denys@ti.com>
> 
> This is done to work around the issue of auto-mounting block devices
> (i.e. SD cards) when root filesystem is still in read-only mode and
> creating /media/<device> mount-points by udev is not possible. That
> is due to udev (/etc/rcS.d/S03udev) getting started earlier than
> checkroot (/etc/rcS.d/S10checkroot.sh) gets a chance to re-mount the
> rootfs as read-write.
> 
> Although, canonical FHS specifies /media/<device> as a mount point
> for removable media devices, the latest 2.3 version was released in
> 2004 and since then FreeDesktop/udisks and other tools adopted the
> new /run/media/<user>/<device> location. That was done to overcome
> read-only rootfs limitation, since /run is usually a tmpfs mounted
> partition, plus avoid name-clash between users.
> 
> For our embedded systems environment we assume single-user operation
> and hence simplify mount point to just /run/media/<device>. But for
> proper per-user mounting to /run/media/<user>/<device>, some sort of
> session management is required along with the tool like udisks, that
> is out of scope of this simple udev-based auto-mounting.
> 
> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
> ---
> v2 - drop PR, bump PV, elaborate on session/user mounting option
> 
>  meta/recipes-core/udev/udev-extraconf/mount.sh             | 14 +++++++-------
>  .../udev/{udev-extraconf_1.0.bb => udev-extraconf_1.1.bb}  |  2 --
>  2 files changed, 7 insertions(+), 9 deletions(-)
>  rename meta/recipes-core/udev/{udev-extraconf_1.0.bb => udev-extraconf_1.1.bb} (99%)
> 
> diff --git a/meta/recipes-core/udev/udev-extraconf/mount.sh b/meta/recipes-core/udev/udev-extraconf/mount.sh
> index cb57e47..3e4f21f 100644
> --- a/meta/recipes-core/udev/udev-extraconf/mount.sh
> +++ b/meta/recipes-core/udev/udev-extraconf/mount.sh
> @@ -20,7 +20,7 @@ done
>  automount() {	
>  	name="`basename "$DEVNAME"`"
>  
> -	! test -d "/media/$name" && mkdir -p "/media/$name"
> +	! test -d "/run/media/$name" && mkdir -p "/run/media/$name"
>  	# Silent util-linux's version of mounting auto
>  	if [ "x`readlink $MOUNT`" = "x/bin/mount.util-linux" ] ;
>  	then
> @@ -38,12 +38,12 @@ automount() {
>  		;;
>  	esac
>  
> -	if ! $MOUNT -t auto $DEVNAME "/media/$name"
> +	if ! $MOUNT -t auto $DEVNAME "/run/media/$name"
>  	then
> -		#logger "mount.sh/automount" "$MOUNT -t auto $DEVNAME \"/media/$name\" failed!"
> -		rm_dir "/media/$name"
> +		#logger "mount.sh/automount" "$MOUNT -t auto $DEVNAME \"/run/media/$name\" failed!"
> +		rm_dir "/run/media/$name"
>  	else
> -		logger "mount.sh/automount" "Auto-mount of [/media/$name] successful"
> +		logger "mount.sh/automount" "Auto-mount of [/run/media/$name] successful"
>  		touch "/tmp/.automount-$name"
>  	fi
>  }
> @@ -60,7 +60,7 @@ rm_dir() {
>  
>  # No ID_FS_TYPE for cdrom device, yet it should be mounted
>  name="`basename "$DEVNAME"`"
> -[ -e /sys/block/$name/device/media ] && media_type=`cat /sys/block/$name/device/media`
> +[ -e /sys/block/$name/device/run/media ] && media_type=`cat /sys/block/$name/device/run/media`
>  
>  if [ "$ACTION" = "add" ] && [ -n "$DEVNAME" ] && [ -n "$ID_FS_TYPE" -o "$media_type" = "cdrom" ]; then
>  	if [ -x "$PMOUNT" ]; then
> @@ -87,5 +87,5 @@ if [ "$ACTION" = "remove" ] && [ -x "$UMOUNT" ] && [ -n "$DEVNAME" ]; then
>  	
>  	# Remove empty directories from auto-mounter
>  	name="`basename "$DEVNAME"`"
> -	test -e "/tmp/.automount-$name" && rm_dir "/media/$name"
> +	test -e "/tmp/.automount-$name" && rm_dir "/run/media/$name"
>  fi
> diff --git a/meta/recipes-core/udev/udev-extraconf_1.0.bb b/meta/recipes-core/udev/udev-extraconf_1.1.bb
> similarity index 99%
> rename from meta/recipes-core/udev/udev-extraconf_1.0.bb
> rename to meta/recipes-core/udev/udev-extraconf_1.1.bb
> index 3810b28..d69056d 100644
> --- a/meta/recipes-core/udev/udev-extraconf_1.0.bb
> +++ b/meta/recipes-core/udev/udev-extraconf_1.1.bb
> @@ -4,8 +4,6 @@ LICENSE = "MIT"
>  LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
>                      file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
>  
> -PR = "r16"
> -
>  SRC_URI = " \
>         file://automount.rules \
>         file://mount.sh \
> -- 
> 1.9.1
> 
> -- 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Saul Wold April 7, 2014, 3:49 p.m. UTC | #2
On 04/06/2014 03:46 PM, Denys Dmytriyenko wrote:
> ping
>

This change is a little late for 1.6 as we are prepping for the final RC 
this week.  It's kind of an API change since it moves the mount location 
/media, should we be linking /media to /run/media?

There is also an issue with the Freescale PPC BSP, which has a bbappend 
for 1.0, so some coordination with them will be needed.

I can revisit this for 1.7 in a week or so.

Sau!

> On Mon, Mar 31, 2014 at 11:54:11PM -0400, Denys Dmytriyenko wrote:
>> From: Denys Dmytriyenko <denys@ti.com>
>>
>> This is done to work around the issue of auto-mounting block devices
>> (i.e. SD cards) when root filesystem is still in read-only mode and
>> creating /media/<device> mount-points by udev is not possible. That
>> is due to udev (/etc/rcS.d/S03udev) getting started earlier than
>> checkroot (/etc/rcS.d/S10checkroot.sh) gets a chance to re-mount the
>> rootfs as read-write.
>>
>> Although, canonical FHS specifies /media/<device> as a mount point
>> for removable media devices, the latest 2.3 version was released in
>> 2004 and since then FreeDesktop/udisks and other tools adopted the
>> new /run/media/<user>/<device> location. That was done to overcome
>> read-only rootfs limitation, since /run is usually a tmpfs mounted
>> partition, plus avoid name-clash between users.
>>
>> For our embedded systems environment we assume single-user operation
>> and hence simplify mount point to just /run/media/<device>. But for
>> proper per-user mounting to /run/media/<user>/<device>, some sort of
>> session management is required along with the tool like udisks, that
>> is out of scope of this simple udev-based auto-mounting.
>>
>> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
>> ---
>> v2 - drop PR, bump PV, elaborate on session/user mounting option
>>
>>   meta/recipes-core/udev/udev-extraconf/mount.sh             | 14 +++++++-------
>>   .../udev/{udev-extraconf_1.0.bb => udev-extraconf_1.1.bb}  |  2 --
>>   2 files changed, 7 insertions(+), 9 deletions(-)
>>   rename meta/recipes-core/udev/{udev-extraconf_1.0.bb => udev-extraconf_1.1.bb} (99%)
>>
>> diff --git a/meta/recipes-core/udev/udev-extraconf/mount.sh b/meta/recipes-core/udev/udev-extraconf/mount.sh
>> index cb57e47..3e4f21f 100644
>> --- a/meta/recipes-core/udev/udev-extraconf/mount.sh
>> +++ b/meta/recipes-core/udev/udev-extraconf/mount.sh
>> @@ -20,7 +20,7 @@ done
>>   automount() {	
>>   	name="`basename "$DEVNAME"`"
>>
>> -	! test -d "/media/$name" && mkdir -p "/media/$name"
>> +	! test -d "/run/media/$name" && mkdir -p "/run/media/$name"
>>   	# Silent util-linux's version of mounting auto
>>   	if [ "x`readlink $MOUNT`" = "x/bin/mount.util-linux" ] ;
>>   	then
>> @@ -38,12 +38,12 @@ automount() {
>>   		;;
>>   	esac
>>
>> -	if ! $MOUNT -t auto $DEVNAME "/media/$name"
>> +	if ! $MOUNT -t auto $DEVNAME "/run/media/$name"
>>   	then
>> -		#logger "mount.sh/automount" "$MOUNT -t auto $DEVNAME \"/media/$name\" failed!"
>> -		rm_dir "/media/$name"
>> +		#logger "mount.sh/automount" "$MOUNT -t auto $DEVNAME \"/run/media/$name\" failed!"
>> +		rm_dir "/run/media/$name"
>>   	else
>> -		logger "mount.sh/automount" "Auto-mount of [/media/$name] successful"
>> +		logger "mount.sh/automount" "Auto-mount of [/run/media/$name] successful"
>>   		touch "/tmp/.automount-$name"
>>   	fi
>>   }
>> @@ -60,7 +60,7 @@ rm_dir() {
>>
>>   # No ID_FS_TYPE for cdrom device, yet it should be mounted
>>   name="`basename "$DEVNAME"`"
>> -[ -e /sys/block/$name/device/media ] && media_type=`cat /sys/block/$name/device/media`
>> +[ -e /sys/block/$name/device/run/media ] && media_type=`cat /sys/block/$name/device/run/media`
>>
>>   if [ "$ACTION" = "add" ] && [ -n "$DEVNAME" ] && [ -n "$ID_FS_TYPE" -o "$media_type" = "cdrom" ]; then
>>   	if [ -x "$PMOUNT" ]; then
>> @@ -87,5 +87,5 @@ if [ "$ACTION" = "remove" ] && [ -x "$UMOUNT" ] && [ -n "$DEVNAME" ]; then
>>   	
>>   	# Remove empty directories from auto-mounter
>>   	name="`basename "$DEVNAME"`"
>> -	test -e "/tmp/.automount-$name" && rm_dir "/media/$name"
>> +	test -e "/tmp/.automount-$name" && rm_dir "/run/media/$name"
>>   fi
>> diff --git a/meta/recipes-core/udev/udev-extraconf_1.0.bb b/meta/recipes-core/udev/udev-extraconf_1.1.bb
>> similarity index 99%
>> rename from meta/recipes-core/udev/udev-extraconf_1.0.bb
>> rename to meta/recipes-core/udev/udev-extraconf_1.1.bb
>> index 3810b28..d69056d 100644
>> --- a/meta/recipes-core/udev/udev-extraconf_1.0.bb
>> +++ b/meta/recipes-core/udev/udev-extraconf_1.1.bb
>> @@ -4,8 +4,6 @@ LICENSE = "MIT"
>>   LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
>>                       file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
>>
>> -PR = "r16"
>> -
>>   SRC_URI = " \
>>          file://automount.rules \
>>          file://mount.sh \
>> --
>> 1.9.1
>>
>> --
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Denys Dmytriyenko April 7, 2014, 9:05 p.m. UTC | #3
On Mon, Apr 07, 2014 at 08:49:44AM -0700, Saul Wold wrote:
> On 04/06/2014 03:46 PM, Denys Dmytriyenko wrote:
> >ping
> >
> 
> This change is a little late for 1.6 as we are prepping for the
> final RC this week.  It's kind of an API change since it moves the
> mount location /media, should we be linking /media to /run/media?
> 
> There is also an issue with the Freescale PPC BSP, which has a
> bbappend for 1.0, so some coordination with them will be needed.
> 
> I can revisit this for 1.7 in a week or so.
> 
> Sau!

I understand the timing concern and am fine waiting another week for when 1.7 
window opens.

But I'm slightly confused as to since when OE-Core is concerned about breaking 
bbappends in other layers? I guess some layers are not created equal, eh? :)
Richard Purdie April 7, 2014, 10:22 p.m. UTC | #4
On Mon, 2014-04-07 at 17:05 -0400, Denys Dmytriyenko wrote:
> I understand the timing concern and am fine waiting another week for when 1.7 
> window opens.
> 
> But I'm slightly confused as to since when OE-Core is concerned about breaking 
> bbappends in other layers? I guess some layers are not created equal, eh? :)

The question is more one of timing. I don't think its reasonable that we
break things like that between -rc2 and -rc3 of 1.6 without a better
reason...

I'm even nervous changing the sstate checksums but I think the CONFFILES
change does warrant that for example.

Cheers,

Richard
Denys Dmytriyenko April 21, 2014, 5:26 p.m. UTC | #5
On Mon, Apr 07, 2014 at 11:22:11PM +0100, Richard Purdie wrote:
> On Mon, 2014-04-07 at 17:05 -0400, Denys Dmytriyenko wrote:
> > I understand the timing concern and am fine waiting another week for when 1.7 
> > window opens.
> > 
> > But I'm slightly confused as to since when OE-Core is concerned about breaking 
> > bbappends in other layers? I guess some layers are not created equal, eh? :)
> 
> The question is more one of timing. I don't think its reasonable that we
> break things like that between -rc2 and -rc3 of 1.6 without a better
> reason...
> 
> I'm even nervous changing the sstate checksums but I think the CONFFILES
> change does warrant that for example.

Is 1.7 window now open? Should I resubmit this patch again? Thanks.
diff mbox

Patch

diff --git a/meta/recipes-core/udev/udev-extraconf/mount.sh b/meta/recipes-core/udev/udev-extraconf/mount.sh
index cb57e47..3e4f21f 100644
--- a/meta/recipes-core/udev/udev-extraconf/mount.sh
+++ b/meta/recipes-core/udev/udev-extraconf/mount.sh
@@ -20,7 +20,7 @@  done
 automount() {	
 	name="`basename "$DEVNAME"`"
 
-	! test -d "/media/$name" && mkdir -p "/media/$name"
+	! test -d "/run/media/$name" && mkdir -p "/run/media/$name"
 	# Silent util-linux's version of mounting auto
 	if [ "x`readlink $MOUNT`" = "x/bin/mount.util-linux" ] ;
 	then
@@ -38,12 +38,12 @@  automount() {
 		;;
 	esac
 
-	if ! $MOUNT -t auto $DEVNAME "/media/$name"
+	if ! $MOUNT -t auto $DEVNAME "/run/media/$name"
 	then
-		#logger "mount.sh/automount" "$MOUNT -t auto $DEVNAME \"/media/$name\" failed!"
-		rm_dir "/media/$name"
+		#logger "mount.sh/automount" "$MOUNT -t auto $DEVNAME \"/run/media/$name\" failed!"
+		rm_dir "/run/media/$name"
 	else
-		logger "mount.sh/automount" "Auto-mount of [/media/$name] successful"
+		logger "mount.sh/automount" "Auto-mount of [/run/media/$name] successful"
 		touch "/tmp/.automount-$name"
 	fi
 }
@@ -60,7 +60,7 @@  rm_dir() {
 
 # No ID_FS_TYPE for cdrom device, yet it should be mounted
 name="`basename "$DEVNAME"`"
-[ -e /sys/block/$name/device/media ] && media_type=`cat /sys/block/$name/device/media`
+[ -e /sys/block/$name/device/run/media ] && media_type=`cat /sys/block/$name/device/run/media`
 
 if [ "$ACTION" = "add" ] && [ -n "$DEVNAME" ] && [ -n "$ID_FS_TYPE" -o "$media_type" = "cdrom" ]; then
 	if [ -x "$PMOUNT" ]; then
@@ -87,5 +87,5 @@  if [ "$ACTION" = "remove" ] && [ -x "$UMOUNT" ] && [ -n "$DEVNAME" ]; then
 	
 	# Remove empty directories from auto-mounter
 	name="`basename "$DEVNAME"`"
-	test -e "/tmp/.automount-$name" && rm_dir "/media/$name"
+	test -e "/tmp/.automount-$name" && rm_dir "/run/media/$name"
 fi
diff --git a/meta/recipes-core/udev/udev-extraconf_1.0.bb b/meta/recipes-core/udev/udev-extraconf_1.1.bb
similarity index 99%
rename from meta/recipes-core/udev/udev-extraconf_1.0.bb
rename to meta/recipes-core/udev/udev-extraconf_1.1.bb
index 3810b28..d69056d 100644
--- a/meta/recipes-core/udev/udev-extraconf_1.0.bb
+++ b/meta/recipes-core/udev/udev-extraconf_1.1.bb
@@ -4,8 +4,6 @@  LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
                     file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
 
-PR = "r16"
-
 SRC_URI = " \
        file://automount.rules \
        file://mount.sh \