Parcourir la source

Merge branch 'for-linus' of git://git.infradead.org/ubi-2.6

* 'for-linus' of git://git.infradead.org/ubi-2.6:
  UBIFS: fix assertion warning and refine comments
  UBIFS: kill CONFIG_UBIFS_FS_DEBUG_CHKS
  UBIFS: use GFP_NOFS properly
  UBI: use GFP_NOFS properly
Linus Torvalds il y a 14 ans
Parent
commit
fdc0ad80a4
7 fichiers modifiés avec 14 ajouts et 20 suppressions
  1. 2 2
      drivers/mtd/ubi/io.c
  2. 0 9
      fs/ubifs/Kconfig
  3. 1 1
      fs/ubifs/debug.c
  4. 7 4
      fs/ubifs/file.c
  5. 1 1
      fs/ubifs/lprops.c
  6. 2 2
      fs/ubifs/lpt_commit.c
  7. 1 1
      fs/ubifs/orphan.c

+ 2 - 2
drivers/mtd/ubi/io.c

@@ -1345,7 +1345,7 @@ int ubi_dbg_check_write(struct ubi_device *ubi, const void *buf, int pnum,
 	if (!(ubi_chk_flags & UBI_CHK_IO))
 	if (!(ubi_chk_flags & UBI_CHK_IO))
 		return 0;
 		return 0;
 
 
-	buf1 = __vmalloc(len, GFP_KERNEL | GFP_NOFS, PAGE_KERNEL);
+	buf1 = __vmalloc(len, GFP_NOFS, PAGE_KERNEL);
 	if (!buf1) {
 	if (!buf1) {
 		ubi_err("cannot allocate memory to check writes");
 		ubi_err("cannot allocate memory to check writes");
 		return 0;
 		return 0;
@@ -1409,7 +1409,7 @@ int ubi_dbg_check_all_ff(struct ubi_device *ubi, int pnum, int offset, int len)
 	if (!(ubi_chk_flags & UBI_CHK_IO))
 	if (!(ubi_chk_flags & UBI_CHK_IO))
 		return 0;
 		return 0;
 
 
-	buf = __vmalloc(len, GFP_KERNEL | GFP_NOFS, PAGE_KERNEL);
+	buf = __vmalloc(len, GFP_NOFS, PAGE_KERNEL);
 	if (!buf) {
 	if (!buf) {
 		ubi_err("cannot allocate memory to check for 0xFFs");
 		ubi_err("cannot allocate memory to check for 0xFFs");
 		return 0;
 		return 0;

+ 0 - 9
fs/ubifs/Kconfig

@@ -58,12 +58,3 @@ config UBIFS_FS_DEBUG
 	  down UBIFS. You can then further enable / disable individual  debugging
 	  down UBIFS. You can then further enable / disable individual  debugging
 	  features using UBIFS module parameters and the corresponding sysfs
 	  features using UBIFS module parameters and the corresponding sysfs
 	  interfaces.
 	  interfaces.
-
-config UBIFS_FS_DEBUG_CHKS
-	bool "Enable extra checks"
-	depends on UBIFS_FS_DEBUG
-	help
-	  If extra checks are enabled UBIFS will check the consistency of its
-	  internal data structures during operation. However, UBIFS performance
-	  is dramatically slower when this option is selected especially if the
-	  file system is large.

+ 1 - 1
fs/ubifs/debug.c

@@ -818,7 +818,7 @@ void dbg_dump_leb(const struct ubifs_info *c, int lnum)
 	printk(KERN_DEBUG "(pid %d) start dumping LEB %d\n",
 	printk(KERN_DEBUG "(pid %d) start dumping LEB %d\n",
 	       current->pid, lnum);
 	       current->pid, lnum);
 
 
-	buf = __vmalloc(c->leb_size, GFP_KERNEL | GFP_NOFS, PAGE_KERNEL);
+	buf = __vmalloc(c->leb_size, GFP_NOFS, PAGE_KERNEL);
 	if (!buf) {
 	if (!buf) {
 		ubifs_err("cannot allocate memory for dumping LEB %d", lnum);
 		ubifs_err("cannot allocate memory for dumping LEB %d", lnum);
 		return;
 		return;

+ 7 - 4
fs/ubifs/file.c

@@ -448,10 +448,12 @@ static int ubifs_write_begin(struct file *file, struct address_space *mapping,
 		if (!(pos & ~PAGE_CACHE_MASK) && len == PAGE_CACHE_SIZE) {
 		if (!(pos & ~PAGE_CACHE_MASK) && len == PAGE_CACHE_SIZE) {
 			/*
 			/*
 			 * We change whole page so no need to load it. But we
 			 * We change whole page so no need to load it. But we
-			 * have to set the @PG_checked flag to make the further
-			 * code know that the page is new. This might be not
-			 * true, but it is better to budget more than to read
-			 * the page from the media.
+			 * do not know whether this page exists on the media or
+			 * not, so we assume the latter because it requires
+			 * larger budget. The assumption is that it is better
+			 * to budget a bit more than to read the page from the
+			 * media. Thus, we are setting the @PG_checked flag
+			 * here.
 			 */
 			 */
 			SetPageChecked(page);
 			SetPageChecked(page);
 			skipped_read = 1;
 			skipped_read = 1;
@@ -559,6 +561,7 @@ static int ubifs_write_end(struct file *file, struct address_space *mapping,
 		dbg_gen("copied %d instead of %d, read page and repeat",
 		dbg_gen("copied %d instead of %d, read page and repeat",
 			copied, len);
 			copied, len);
 		cancel_budget(c, page, ui, appending);
 		cancel_budget(c, page, ui, appending);
+		ClearPageChecked(page);
 
 
 		/*
 		/*
 		 * Return 0 to force VFS to repeat the whole operation, or the
 		 * Return 0 to force VFS to repeat the whole operation, or the

+ 1 - 1
fs/ubifs/lprops.c

@@ -1094,7 +1094,7 @@ static int scan_check_cb(struct ubifs_info *c,
 		}
 		}
 	}
 	}
 
 
-	buf = __vmalloc(c->leb_size, GFP_KERNEL | GFP_NOFS, PAGE_KERNEL);
+	buf = __vmalloc(c->leb_size, GFP_NOFS, PAGE_KERNEL);
 	if (!buf) {
 	if (!buf) {
 		ubifs_err("cannot allocate memory to scan LEB %d", lnum);
 		ubifs_err("cannot allocate memory to scan LEB %d", lnum);
 		goto out;
 		goto out;

+ 2 - 2
fs/ubifs/lpt_commit.c

@@ -1633,7 +1633,7 @@ static int dbg_check_ltab_lnum(struct ubifs_info *c, int lnum)
 	if (!(ubifs_chk_flags & UBIFS_CHK_LPROPS))
 	if (!(ubifs_chk_flags & UBIFS_CHK_LPROPS))
 		return 0;
 		return 0;
 
 
-	buf = p = __vmalloc(c->leb_size, GFP_KERNEL | GFP_NOFS, PAGE_KERNEL);
+	buf = p = __vmalloc(c->leb_size, GFP_NOFS, PAGE_KERNEL);
 	if (!buf) {
 	if (!buf) {
 		ubifs_err("cannot allocate memory for ltab checking");
 		ubifs_err("cannot allocate memory for ltab checking");
 		return 0;
 		return 0;
@@ -1885,7 +1885,7 @@ static void dump_lpt_leb(const struct ubifs_info *c, int lnum)
 
 
 	printk(KERN_DEBUG "(pid %d) start dumping LEB %d\n",
 	printk(KERN_DEBUG "(pid %d) start dumping LEB %d\n",
 	       current->pid, lnum);
 	       current->pid, lnum);
-	buf = p = __vmalloc(c->leb_size, GFP_KERNEL | GFP_NOFS, PAGE_KERNEL);
+	buf = p = __vmalloc(c->leb_size, GFP_NOFS, PAGE_KERNEL);
 	if (!buf) {
 	if (!buf) {
 		ubifs_err("cannot allocate memory to dump LPT");
 		ubifs_err("cannot allocate memory to dump LPT");
 		return;
 		return;

+ 1 - 1
fs/ubifs/orphan.c

@@ -898,7 +898,7 @@ static int dbg_scan_orphans(struct ubifs_info *c, struct check_info *ci)
 	if (c->no_orphs)
 	if (c->no_orphs)
 		return 0;
 		return 0;
 
 
-	buf = __vmalloc(c->leb_size, GFP_KERNEL | GFP_NOFS, PAGE_KERNEL);
+	buf = __vmalloc(c->leb_size, GFP_NOFS, PAGE_KERNEL);
 	if (!buf) {
 	if (!buf) {
 		ubifs_err("cannot allocate memory to check orphans");
 		ubifs_err("cannot allocate memory to check orphans");
 		return 0;
 		return 0;