[Libsysio-commit] HEAD: libsysio/src init.c inode.c mount.c namei.c
Brought to you by:
lward
From: Lee W. <lw...@us...> - 2008-12-06 22:16:39
|
Update of /cvsroot/libsysio/libsysio/src In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv26562/src Modified Files: init.c inode.c mount.c namei.c Log Message: In do_mnt(), must put the directory being covered whether the mount succeded or not. Fixed. Index: init.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/init.c,v retrieving revision 1.43 retrieving revision 1.44 diff -u -w -b -B -p -r1.43 -r1.44 --- init.c 6 Dec 2008 18:30:49 -0000 1.43 +++ init.c 6 Dec 2008 21:56:25 -0000 1.44 @@ -573,6 +573,7 @@ do_mnt(char *args) char *ty, *name; unsigned long flags; struct pnode *dir; + int err; len = strlen(args); if (_sysio_get_args(args, v) - args != (ssize_t )len || @@ -606,13 +607,14 @@ do_mnt(char *args) if (!(dir = _sysio_cwd) && !(dir = _sysio_root)) return -ENOENT; P_GET(dir); - return _sysio_mount(dir, + err = _sysio_mount(dir, ty, v[1].ovi_value, name, flags, v[3].ovi_value); P_PUT(dir); + return err; } Index: inode.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/inode.c,v retrieving revision 1.46 retrieving revision 1.47 diff -u -w -b -B -p -r1.46 -r1.47 --- inode.c 26 Jul 2008 01:31:40 -0000 1.46 +++ inode.c 6 Dec 2008 21:56:25 -0000 1.47 @@ -603,7 +603,7 @@ _sysio_pb_gone(struct pnode_base *pb) if (ino) { I_RELE(ino); - if (!ino->i_ref) + if (!(ino->i_ref || ino->i_immune)) _sysio_i_gone(ino); else I_UNLOCK(ino); Index: mount.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/mount.c,v retrieving revision 1.31 retrieving revision 1.32 diff -u -w -b -B -p -r1.31 -r1.32 --- mount.c 18 Jun 2008 15:50:39 -0000 1.31 +++ mount.c 6 Dec 2008 21:56:25 -0000 1.32 @@ -398,7 +398,6 @@ _sysio_mount(struct pnode *cwd, tocover, &mnt); } - if (err) P_PUT(tocover); return err; } @@ -746,6 +745,7 @@ _sysio_automount(struct pnode *mntpno) err = parse_automount_spec(buf, &fstype, &source, &opts); if (err) goto out; + flags = 0; if (opts) opts = parse_opts(opts, &flags); Index: namei.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/namei.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -w -b -B -p -r1.32 -r1.33 --- namei.c 4 Nov 2008 22:04:47 -0000 1.32 +++ namei.c 6 Dec 2008 21:56:25 -0000 1.33 @@ -355,9 +355,9 @@ _sysio_path_walk(struct pnode *parent, s NULL, NULL, 1); - assert(!err || (err && !pno)); } if (!err && (err = _sysio_automount(pno)) == 0) { + struct pnode *covered; /* * All went well. Need to switch * parent pno and ino to the @@ -371,8 +371,10 @@ _sysio_path_walk(struct pnode *parent, s * The alternative could get us into an * infinite loop. */ - nd->nd_pno = nd->nd_pno->p_cover; + covered = nd->nd_pno; + nd->nd_pno = covered->p_cover; P_GET(nd->nd_pno); + P_PUT(covered); ino = nd->nd_pno->p_base->pb_ino; assert(ino); |