Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 6 Dec 2020 20:50:22 +0000 (UTC)
From:      Kirk McKusick <mckusick@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r368396 - in head/sys: fs/ext2fs ufs/ufs
Message-ID:  <202012062050.0B6KoMcE057354@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mckusick
Date: Sun Dec  6 20:50:21 2020
New Revision: 368396
URL: https://svnweb.freebsd.org/changeset/base/368396

Log:
  Document the BA_CLRBUF flag used in ufs and ext2fs filesystems.
  
  Suggested by: kib
  MFC after:    3 days
  Sponsored by: Netflix

Modified:
  head/sys/fs/ext2fs/ext2_extern.h
  head/sys/ufs/ufs/ufs_extern.h

Modified: head/sys/fs/ext2fs/ext2_extern.h
==============================================================================
--- head/sys/fs/ext2fs/ext2_extern.h	Sun Dec  6 19:24:38 2020	(r368395)
+++ head/sys/fs/ext2fs/ext2_extern.h	Sun Dec  6 20:50:21 2020	(r368396)
@@ -135,6 +135,13 @@ void	ext2_gd_csum_set(struct m_ext2fs *);
 
 /* Flags to low-level allocation routines.
  * The low 16-bits are reserved for IO_ flags from vnode.h.
+ *
+ * The BA_CLRBUF flag specifies that the existing content of the block
+ * will not be completely overwritten by the caller, so buffers for new
+ * blocks must be cleared and buffers for existing blocks must be read.
+ * When BA_CLRBUF is not set the buffer will be completely overwritten
+ * and there is no reason to clear them or to spend I/O fetching existing
+ * data. The BA_CLRBUF flag is handled in the UFS_BALLOC() functions.
  */
 #define	BA_CLRBUF	0x00010000	/* Clear invalid areas of buffer. */
 #define	BA_SEQMASK	0x7F000000	/* Bits holding seq heuristic. */

Modified: head/sys/ufs/ufs/ufs_extern.h
==============================================================================
--- head/sys/ufs/ufs/ufs_extern.h	Sun Dec  6 19:24:38 2020	(r368395)
+++ head/sys/ufs/ufs/ufs_extern.h	Sun Dec  6 20:50:21 2020	(r368396)
@@ -119,6 +119,13 @@ void	softdep_revert_rmdir(struct inode *, struct inode
  *
  * Note: The general vfs code typically limits the sequential heuristic
  * count to 127.  See sequential_heuristic() in kern/vfs_vnops.c
+ *
+ * The BA_CLRBUF flag specifies that the existing content of the block
+ * will not be completely overwritten by the caller, so buffers for new
+ * blocks must be cleared and buffers for existing blocks must be read.
+ * When BA_CLRBUF is not set the buffer will be completely overwritten
+ * and there is no reason to clear them or to spend I/O fetching existing
+ * data. The BA_CLRBUF flag is handled in the UFS_BALLOC() functions.
  */
 #define	BA_CLRBUF	0x00010000	/* Clear invalid areas of buffer. */
 #define	BA_METAONLY	0x00020000	/* Return indirect block buffer. */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202012062050.0B6KoMcE057354>