[Galaxy S I9000 Android Development] Andro1d:
Problems with fs.options...

It seems that fs.options works like it should. But probably we are hammering a prob in /init.rc itself...

I can't mount/boot anymore using my own mountpoints.

/ # mount
rootfs on / type rootfs (ro,relatime)
proc on /proc type proc (rw,relatime)
sys on /sys type sysfs (rw,relatime)
tmpfs on /dev type tmpfs (rw,relatime,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
none on /acct type cgroup (rw,relatime,cpuacct)
/dev/block/stl6 on /mnt/.lfs type j4fs (rw,relatime)
tmpfs on /mnt/asec type tmpfs (rw,relatime,mode=755,gid=1000)
none on /dev/cpuctl type cgroup (rw,relatime,cpu)

In fs.options i had:

...
stl9 barrier=0,data=writeback,nobh,nodelalloc,noatime
...

Hummm... looks ok inside /init.rc

mount /dev/block/stl9 /system nodev nodiratime ro barrier=0 data=writeback nobh nodelalloc noatime

but it doesnt want to mount ?!?!

If i manually mount /system using the same options it worx ?!?!

# mount /dev/block/stl9 -o nodev,nodiratime,ro,barrier=0,data=writeback,nobh,n
odelalloc,noatime /system

# mount | grep system
/dev/block/stl9 on /system type ext4 (ro,nodev,noatime,nodiratime,barrier=0,nobh,nodelalloc,data=writeback)

I just saw a minor thing on the mount lines:

I dont know the exact format of /init.rc, but is it ok if you have >1 spaces between options ?

mount /dev/block/stl9 /system nodev nodiratime ro barrier=0 data=writeback nobh nodelalloc noatime
^^ ^^

Btw, to get the phone running again i mount my sd, and delete the fugu options file. Then i'm able to boot my phone again oO

//EDIT:

Found the problem

# mount jfs /dev/block/stl9 /system nodev relatime nodiratime ro iocharset=utf8
mount /dev/block/stl9 /system nodev nodiratime ro barrier=0 data=writeback nobh nodelalloc noatime

missing the fstype between the mount cmd and the blockdevice !

Investigating this... atm...

BUG in Bleeeeding :)

if test -f /fugumod_sd/fugumod/fs.options
then
STL9_MNT=",`grep stl9 /fugumod_sd/fugumod/fs.options | awk '{ print $2 }'`"
STL10_MNT=",`grep stl10 /fugumod_sd/fugumod/fs.options | awk '{ print $2 }'`"
STL11_MNT=",`grep stl11 /fugumod_sd/fugumod/fs.options | awk '{ print $2 }'`"
MMC_MNT=",`grep mmcblk0p2 /fugumod_sd/fugumod/fs.options | awk '{ print $2 }'`"
else
set_mount_options
fi

Missing STL9_FS,STL10_FS,STL11_FS,MMC_FS definition in this 'if' condition.

You set the FS Variables inside set_mount_options.

If there is a fs.options file, the _FS Vars will not be defined, therefore the /init.rc syntax is missing the FSType in column2

Correct it would be something like this:

if test -f /fugumod_sd/fugumod/fs.options
then
STL9_FS=`grep stl9 /fugumod_sd/fugumod/fs.current | awk '{ print $2 }'`
STL10_FS=`grep stl10 /fugumod_sd/fugumod/fs.current | awk '{ print $2 }'`
STL11_FS=`grep stl11 /fugumod_sd/fugumod/fs.current | awk '{ print $2 }'`
MMC_FS=`grep mmcblk0p2 /fugumod_sd/fugumod/fs.current | awk '{ print $2 }'`
STL9_MNT=",`grep stl9 /fugumod_sd/fugumod/fs.options | awk '{ print $2 }'`"
STL10_MNT=",`grep stl10 /fugumod_sd/fugumod/fs.options | awk '{ print $2 }'`"
STL11_MNT=",`grep stl11 /fugumod_sd/fugumod/fs.options | awk '{ print $2 }'`"
MMC_MNT=",`grep mmcblk0p2 /fugumod_sd/fugumod/fs.options | awk '{ print $2 }'`"
else
set_mount_options
fi

Or you take the _FS definitions out of set_mount_options and place it just infront of the if line. Then you have to define them only once :)

Btw, the "doublespace" "bug" could be fixed too. No idea if this has an impact, but, other definitions have no doublespaces on mount options.