socsvn commit: r240206 - soc2012/oleksandr/udf-head/sys/fs/udf2

oleksandr at FreeBSD.org oleksandr at FreeBSD.org
Wed Aug 8 21:05:10 UTC 2012


Author: oleksandr
Date: Wed Aug  8 21:05:07 2012
New Revision: 240206
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=240206

Log:
  Correct udf_readdir and add some KASSERTs

Modified:
  soc2012/oleksandr/udf-head/sys/fs/udf2/udf_subr.c
  soc2012/oleksandr/udf-head/sys/fs/udf2/udf_vnops.c

Modified: soc2012/oleksandr/udf-head/sys/fs/udf2/udf_subr.c
==============================================================================
--- soc2012/oleksandr/udf-head/sys/fs/udf2/udf_subr.c	Wed Aug  8 20:21:33 2012	(r240205)
+++ soc2012/oleksandr/udf-head/sys/fs/udf2/udf_subr.c	Wed Aug  8 21:05:07 2012	(r240206)
@@ -964,7 +964,7 @@
 		ump->packet_size = MAXPHYS / ump->discinfo.sector_size;
 		ump->packet_size = MIN(ump->packet_size, 64);
 	}
-	/*KASSERT(ump->packet_size >= 1); */
+	KASSERT(ump->packet_size >= 1, ("udf_read_anchors: packet size is less than one")); 
 
 	/* read anchors start+256, start+512, end-256, end */
 	positions[0] = track_start+256;
@@ -2133,7 +2133,7 @@
 
 #if 0  
 	/*
-	 * Select our sheduler
+	 * Select our scheduler
 	 */
 	ump->strategy = &udf_strat_rmw;
 	if (n_virt || (ump->discinfo.mmc_cur & MMC_CAP_PSEUDOOVERWRITE))
@@ -3180,7 +3180,8 @@
 	 */
 
 	ump->sparable_packet_size = le16toh(pms->packet_len);
-	/*KASSERT(ump->sparable_packet_size >= ump->packet_size); */	/* XXX */
+	KASSERT(ump->sparable_packet_size >= ump->packet_size, 
+		("udf_read_sparables: sparable packet size is less than packet size"));
 
 	for (spar = 0; spar < pms->n_st; spar++) {
 		lb_num = pms->st_loc[spar];

Modified: soc2012/oleksandr/udf-head/sys/fs/udf2/udf_vnops.c
==============================================================================
--- soc2012/oleksandr/udf-head/sys/fs/udf2/udf_vnops.c	Wed Aug  8 20:21:33 2012	(r240205)
+++ soc2012/oleksandr/udf-head/sys/fs/udf2/udf_vnops.c	Wed Aug  8 21:05:07 2012	(r240206)
@@ -231,7 +231,7 @@
 #endif
 
 	KASSERT(udf_node, ("udf_read: udf_node is null"));
-	KASSERT(udf_noed->fe || udf_node->efe, ("udf_read: Extended File Entry or File Entry is null"));
+	KASSERT(udf_node->fe || udf_node->efe, ("udf_read: Extended File Entry or File Entry is null"));
 
 	/* get file/directory filesize */
 	if (udf_node->fe)
@@ -275,14 +275,8 @@
 /* --------------------------------------------------------------------- */
 #if 0
 int
-udf_write(void *v)
+udf_write(struct vop_write_args  *ap)
 {
-	struct vop_write_args /* {
-		struct vnode *a_vp;
-		struct uio *a_uio;
-		int a_ioflag;
-		kauth_cred_t a_cred;
-	} */ *ap = v;
 	struct vnode *vp     = ap->a_vp;
 	struct uio   *uio    = ap->a_uio;
 	int           ioflag = ap->a_ioflag;
@@ -598,7 +592,7 @@
 	udf_node = VTOI(vp);
 	ump = udf_node->ump;
 
-	DPRINTF(READDIR, ("udf_readdir_called\n"));
+	DPRINTF(READDIR, ("udf_readdir called\n"));
 
 	/* This operation only makes sense on directory nodes. */
 	if (vp->v_type != VDIR)
@@ -622,7 +616,7 @@
 		 * were it left off.
 		 */
 		ncookies = uio->uio_resid / 8;
-		cookies = malloc(sizeof(u_long) * ncookies, M_UDFTEMP, 
+		cookies = malloc(sizeof(u_long) * ncookies, M_TEMP, 
 		    M_WAITOK | M_ZERO);
 		if (cookies == NULL)
 			return (ENOMEM);
@@ -733,10 +727,8 @@
 			DPRINTF(READDIR, ("\tread dirent `%s', type %d\n",
 			    dirent->d_name, dirent->d_type));
 			if (cookiesp) {
-				/*
-				if (++acookies >= ncookies)
+				if (acookies + 1 > ncookies)
 					break; 
-				*/
 				acookies++;
 				*cookiesp++ = cookie;
 			}
@@ -753,7 +745,8 @@
 
 bail:
 	/* tell the calling layer whether we need to be called again */
-	*ap->a_eofflag = (uio->uio_offset >= file_size);
+	if (ap->a_eofflag)
+		*ap->a_eofflag = (uio->uio_offset >= file_size);
 
 	if (error < 0) 
 		error = 0;
@@ -763,7 +756,7 @@
 			free(cookies, M_UDFTEMP);
 		} else {
 			*ap->a_ncookies = acookies;
-			//*ap->a_cookies = cookies;
+			*ap->a_cookies = cookies;
 		}
 	}
 


More information about the svn-soc-all mailing list