Le 01.12.2008 01:18, Marcin Slusarz a écrit : > On Mon, Dec 01, 2008 at 12:44:05AM +0100, Laurent Riffard wrote: >> Hi, >> >> With next-2008-11-28, I was unable to mount an UDF-formatted DVD-RW: >> >> ~$ mount -oro -t udf /dev/sr0 /media/cdrom/ >> mount: Not a directory >> >> There was no problem with 2.6.28-rc6. >> >> I made a bisection: >> >> 33284bdf40f88160a154202510b27d983138c805 is first bad commit >> commit 33284bdf40f88160a154202510b27d983138c805 >> Author: Marcin Slusarz <marcin.slusarz@xxxxxxxxx> >> Date: Sun Nov 16 20:52:19 2008 +0100 >> >> udf: implement mode and dmode mounting options >> >> "dmode" allows overriding permissions of directories and >> "mode" allows overriding permissions of files. >> >> Signed-off-by: Marcin Slusarz <marcin.slusarz@xxxxxxxxx> >> Cc: Jan Kara <jack@xxxxxxx> >> Signed-off-by: Jan Kara <jack@xxxxxxx> >> >> >> Indeed, with this commit, I *must* use the dmode option to mount my DVD: > > That's not intended behaviour... ;) > >> ~$ sudo mount -oro,dmode=0755 -t udf /dev/sr0 /media/cdrom/ >> ~$ grep /media/cdrom /proc/mounts >> /dev/scd0 /media/cdrom udf ro,mode=177777,dmode=755,utf8 0 0 > ^^^^^^ > funny (it's 65535 / (u16)-1) > [snip] > > Can you check whether attached patch fixes it? > What architecture are you testing on? i686, 32-bit althought CPU is "AMD Athlon(tm) 64 X2 Dual Core Processor 5000+ stepping 02". ~$ uname -a Linux calimero 2.6.28-rc6-next-20081128-05108-g389b1c9 #62 SMP PREEMPT Mon Dec 1 19:53:55 CET 2008 i686 GNU/Linux Current kernel is next-20081128 + reiser4 patches + your patch: it seems to works well now. First test: mount with default options. It works as expected. ~$ sudo mount -oro -t udf /dev/sr0 /media/cdrom/ ~$ grep /media/cdrom /proc/mounts /dev/scd0 /media/cdrom udf ro,utf8 0 0 ~$ ls -al /media/cdrom/ total 46 drwxrwxrwx 5 root root 344 2007-12-24 18:09 . drwxr-xr-x 12 root root 4096 2008-12-01 20:04 .. drwxr-x--- 2 laurent laurent 7112 2008-11-30 20:14 flexbackup drwxr-xr-x 2 root root 40 2005-11-20 23:37 lost+found drwxr-x--- 10 laurent laurent 4548 2005-11-25 18:18 patches ~$ ls -al /media/cdrom/flexbackup/ total 4307946 drwxr-x--- 2 laurent laurent 7112 2008-11-30 20:14 . drwxrwxrwx 5 root root 344 2007-12-24 18:09 .. -rw-r----- 1 laurent laurent 44 2006-10-01 15:36 00-index-key [...] ~$ sudo umount /dev/scd0 Second test : mount with dmode=0755 option. Does work as expected too. ~$ sudo mount -oro,dmode=0755 -t udf /dev/sr0 /media/cdrom/ ~$ grep /media/cdrom /proc/mounts /dev/scd0 /media/cdrom udf ro,dmode=755,utf8 0 0 ~$ ls -al /media/cdrom/ total 46 drwxr-xr-x 5 root root 344 2007-12-24 18:09 . drwxr-xr-x 12 root root 4096 2008-12-01 20:04 .. drwxr-xr-x 2 laurent laurent 7112 2008-11-30 20:14 flexbackup drwxr-xr-x 2 root root 40 2005-11-20 23:37 lost+found drwxr-xr-x 10 laurent laurent 4548 2005-11-25 18:18 patches ~$ ls -al /media/cdrom/flexbackup/ total 4307946 drwxr-xr-x 2 laurent laurent 7112 2008-11-30 20:14 . drwxr-xr-x 5 root root 344 2007-12-24 18:09 .. -rw-r----- 1 laurent laurent 44 2006-10-01 15:36 00-index-key [...] Tested-by: Laurent Riffard <laurent.riffard@xxxxxxx> > diff --git a/fs/udf/inode.c b/fs/udf/inode.c > index 6612a27..9eeb726 100644 > --- a/fs/udf/inode.c > +++ b/fs/udf/inode.c > @@ -1222,10 +1222,10 @@ static void udf_fill_inode(struct inode *inode, struct buffer_head *bh) > iinfo->i_lenExtents = inode->i_size; > > if (fe->icbTag.fileType != ICBTAG_FILE_TYPE_DIRECTORY && > - sbi->s_fmode != -1) > + sbi->s_fmode != (mode_t)-1) > inode->i_mode = sbi->s_fmode; > else if (fe->icbTag.fileType == ICBTAG_FILE_TYPE_DIRECTORY && > - sbi->s_dmode != -1) > + sbi->s_dmode != (mode_t)-1) > inode->i_mode = sbi->s_dmode; > else > inode->i_mode = udf_convert_permissions(fe); > diff --git a/fs/udf/super.c b/fs/udf/super.c > index e5d121d..af8a771 100644 > --- a/fs/udf/super.c > +++ b/fs/udf/super.c > @@ -284,9 +284,9 @@ static int udf_show_options(struct seq_file *seq, struct vfsmount *mnt) > seq_printf(seq, ",gid=%u", sbi->s_gid); > if (sbi->s_umask != 0) > seq_printf(seq, ",umask=%o", sbi->s_umask); > - if (sbi->s_fmode != -1) > + if (sbi->s_fmode != (mode_t)-1) > seq_printf(seq, ",mode=%o", sbi->s_fmode); > - if (sbi->s_dmode != -1) > + if (sbi->s_dmode != (mode_t)-1) > seq_printf(seq, ",dmode=%o", sbi->s_dmode); > if (UDF_QUERY_FLAG(sb, UDF_FLAG_SESSION_SET)) > seq_printf(seq, ",session=%u", sbi->s_session); Thanks ~~ laurent -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html