apart from the numerical value, yes, looks good.

Poul-Henning

In message <[EMAIL PROTECTED]>, Maxim Sobolev writes:
>
>--%--multipart-mixed-boundary-1.97537.999617732--%
>Content-Type: text/plain; charset=us-ascii
>Content-Transfer-Encoding: 7bit
>
>> In message <[EMAIL PROTECTED]>, Maxim Sobolev writes:
>> >> 
>> >> In message <[EMAIL PROTECTED]>, Brent Verner writes:
>> >> >
>> >> >I've done a /cursory/ look over how this v_tag is used.  I'm not sure
>> >> >this is a simple/clean as you propose, since this is used in the 
>> >> >IS_LOCKING_VFS macro, as well as in union_subr.c...
>> >> 
>> > Well, that is just too bad, because IS_LOCKING_VFS is wrong then.
>> >> 
>> >> The places which inspect v_tag will have to be changed to use
>> >> strcmp() then...
>> >
>> >I think that we can add a new vnode flag, say VCANLOCK, so that each
>> >particular VFS can set it if it supports locking, which should allow
>> >to remove pre-defined VFS list from the IS_LOCKING_VFS macro. I can
>> >produce a patch if it sounds reasonably.
>> 
>> Yeah, I think that makes a lot of sense.
>
>See attached. Please let me know if it is OK for you.
>
>-Maxim
>
>--%--multipart-mixed-boundary-1.97537.999617732--%
>Content-Type: text/plain; charset=us-ascii
>Content-Transfer-Encoding: 7bit
>Content-Description: ASCII C program text
>Content-Disposition: attachment; filename="p"
>
>Index: isofs/cd9660/cd9660_vfsops.c
>===================================================================
>RCS file: /home/ncvs/src/sys/isofs/cd9660/cd9660_vfsops.c,v
>retrieving revision 1.91
>diff -d -u -r1.91 cd9660_vfsops.c
>--- isofs/cd9660/cd9660_vfsops.c       2001/05/16 18:04:30     1.91
>+++ isofs/cd9660/cd9660_vfsops.c       2001/09/04 15:20:46
>@@ -697,6 +697,7 @@
>       }
>       MALLOC(ip, struct iso_node *, sizeof(struct iso_node), M_ISOFSNODE,
>           M_WAITOK | M_ZERO);
>+      vp->v_flag |= VLOCKABLE;
>       lockinit(&vp->v_lock, PINOD, "isonode", 0, 0);
>       /*
>        * ISOFS uses stdlock and can share lock structure
>Index: ufs/ffs/ffs_vfsops.c
>===================================================================
>RCS file: /home/ncvs/src/sys/ufs/ffs/ffs_vfsops.c,v
>retrieving revision 1.157
>diff -d -u -r1.157 ffs_vfsops.c
>--- ufs/ffs/ffs_vfsops.c       2001/06/28 22:21:27     1.157
>+++ ufs/ffs/ffs_vfsops.c       2001/09/04 15:21:25
>@@ -1172,6 +1172,7 @@
>               return (error);
>       }
>       bzero((caddr_t)ip, sizeof(struct inode));
>+      vp->v_flag |= VLOCKABLE;
>       /*
>        * FFS supports lock sharing in the stack of vnodes
>        */
>Index: ufs/ifs/ifs_vfsops.c
>===================================================================
>RCS file: /home/ncvs/src/sys/ufs/ifs/ifs_vfsops.c,v
>retrieving revision 1.6
>diff -d -u -r1.6 ifs_vfsops.c
>--- ufs/ifs/ifs_vfsops.c       2001/04/25 07:07:51     1.6
>+++ ufs/ifs/ifs_vfsops.c       2001/09/04 15:21:25
>@@ -217,6 +217,7 @@
>               return (error);
>       }
>       bzero((caddr_t)ip, sizeof(struct inode));
>+      vp->v_flag |= VLOCKABLE;
>       /*
>        * IFS supports lock sharing in the stack of vnodes
>        */
>Index: nfs/nfs_node.c
>===================================================================
>RCS file: /home/ncvs/src/sys/nfs/nfs_node.c,v
>retrieving revision 1.49
>diff -d -u -r1.49 nfs_node.c
>--- nfs/nfs_node.c     2001/05/01 08:13:14     1.49
>+++ nfs/nfs_node.c     2001/09/04 15:21:25
>@@ -232,6 +232,7 @@
>       }
>       vp = nvp;
>       bzero((caddr_t)np, sizeof *np);
>+      vp->v_flag |= VLOCKABLE;
>       vp->v_data = np;
>       np->n_vnode = vp;
>       /*
>Index: sys/vnode.h
>===================================================================
>RCS file: /home/ncvs/src/sys/sys/vnode.h,v
>retrieving revision 1.154
>diff -d -u -r1.154 vnode.h
>--- sys/vnode.h        2001/08/27 06:09:55     1.154
>+++ sys/vnode.h        2001/09/04 15:21:25
>@@ -175,6 +175,7 @@
> /* open for business  0x100000 */
> #define       VONWORKLST      0x200000 /* On syncer work-list */
> #define       VMOUNT          0x400000 /* Mount in progress */
>+#define VLOCKABLE     0x600000 /* vnode supports locking */
> 
> /*
>  * Vnode attributes.  A field value of VNOVAL represents a field whose value
>@@ -433,12 +434,7 @@
> /*
>  * [dfr] Kludge until I get around to fixing all the vfs locking.
>  */
>-#define IS_LOCKING_VFS(vp)    ((vp)->v_tag == VT_UFS                  \
>-                               || (vp)->v_tag == VT_NFS               \
>-                               || (vp)->v_tag == VT_LFS               \
>-                               || (vp)->v_tag == VT_ISOFS             \
>-                               || (vp)->v_tag == VT_MSDOSFS           \
>-                               || (vp)->v_tag == VT_DEVFS)
>+#define IS_LOCKING_VFS(vp)    ((vp)->v_flag & VLOCKABLE)
> 
> #define ASSERT_VOP_LOCKED(vp, str)                                    \
> do {                                                                  \
>Index: fs/devfs/devfs_vnops.c
>===================================================================
>RCS file: /home/ncvs/src/sys/fs/devfs/devfs_vnops.c,v
>retrieving revision 1.27
>diff -d -u -r1.27 devfs_vnops.c
>--- fs/devfs/devfs_vnops.c     2001/08/14 06:42:32     1.27
>+++ fs/devfs/devfs_vnops.c     2001/09/04 15:21:25
>@@ -151,6 +151,7 @@
>       } else {
>               vp->v_type = VBAD;
>       }
>+      vp->v_flag |= VLOCKABLE;
>       vp->v_data = de;
>       de->de_vnode = vp;
>       vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
>Index: fs/msdosfs/msdosfs_denode.c
>===================================================================
>RCS file: /home/ncvs/src/sys/fs/msdosfs/msdosfs_denode.c,v
>retrieving revision 1.57
>diff -d -u -r1.57 msdosfs_denode.c
>--- fs/msdosfs/msdosfs_denode.c        2001/05/25 08:14:09     1.57
>+++ fs/msdosfs/msdosfs_denode.c        2001/09/04 15:21:33
>@@ -261,6 +261,7 @@
>               return error;
>       }
>       bzero((caddr_t)ldep, sizeof *ldep);
>+      nvp->v_flag |= VLOCKABLE;
>       lockinit(&nvp->v_lock, PINOD, "denode", 0, 0);
>       nvp->v_vnlock = &nvp->v_lock;
>       nvp->v_data = ldep;
>
>--%--multipart-mixed-boundary-1.97537.999617732--%--
>

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
[EMAIL PROTECTED]         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to