Diffs for NetBSD-current 3.99.11

Ty Sarna <[email protected]>
Newsgroups gmane.comp.file-systems.arla.general
Message-ID <[email protected]>
In conjuntion with the previous patch, the following patch makes 0.41
compile and (seem to) work with NetBSD-current up 3.99.11 (through
2005-11-26).

.11 represents the merge of the yamt-vop branch.  VOP_TRUNCATE and
VOP_UPDATE were removed.  nnpfs used those internally.  The patch is
based on my understanding of this as follows:

 - if your filesystem called a obsolete VOP_XXX internally before, you
   should simply replace this with a direct call to your foofs_xxx()
   implementation directly.

 - nnpfs does not provide nnpfs_truncate or nnpfs_update impelementations.

 - thus the calls to VOP_TRUNCATE/UPDATE were calling the default function

 - the default function is nnpfs_eopnotsupp, which just returns EOPNOTSUPP

 - Thus the call to (void) VOP_TRUNCATE(...) is a no-op and can be
   elided (I left it active for previous version of netbsd anyway)

 - the call to error = VOP_UPDATE(...) is equivalent to
   error = EOPNOTSUPP, which would disable the following code
   that updates size/time/etc of nodes and dirties it, which seems
   wrong. So, I have removed the call instead (for >= 3.99.11).

With this patch, from my limited (2 minutes) of testing, arla seems to
work on 3.99.11, but I am not confident it is TRT...

yamt & lha, I would appreciate if you would look this over and make sure
it seems correct to you...

Thanks.


--- arla-0.41/nnpfs/bsd/nnpfs_vnodeops-netbsd.c.orig	2005-11-14 19:15:43.000000000 -0500
+++ arla-0.41/nnpfs/bsd/nnpfs_vnodeops-netbsd.c	2006-01-20 10:56:42.000000000 -0500
@@ -355,12 +355,16 @@
     }
 
     if (error) {
+#if __NetBSD_Version__ < 399001100
 	(void) VOP_TRUNCATE(vp, osize, ioflag & IO_SYNC, ap->a_cred,
 	    uio->uio_procp);
+#endif
 	nnpfs_uio_setoffset(uio, nnpfs_uio_offset(uio) - resid - uio->uio_resid);
 	uio->uio_resid = resid;
+#if __NetBSD_Version__ < 399001100
     } else if (resid > uio->uio_resid && (ioflag & IO_SYNC) == IO_SYNC) {
 	error = VOP_UPDATE(vp, NULL, NULL, UPDATE_WAIT);
+#endif
     }
     if (!error) {
 	struct timespec ts;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.