- io-accounting-read-accounting.patch removed from -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled
     io-accounting: read accounting
has been removed from the -mm tree.  Its filename was
     io-accounting-read-accounting.patch

This patch was dropped because it is obsolete

------------------------------------------------------
Subject: io-accounting: read accounting
From: Andrew Morton <akpm@xxxxxxxx>

Account for the number of storage-level byte reads which this process caused
to happen.

This is a bit trickier due to the need to handle ->readpages.  It's OK if the
filesystem is using all the generic stuff, but if the filesystem is going it
alone then more work is needed.

Perhaps all this should have been done at the submit_bio level.  But that
would subvert things like NFS, and NFS is an open question at this stage.

We don't account for things like filesystem metadata reads yet.

Cc: Jay Lan <jlan@xxxxxxx>
Cc: Shailabh Nagar <nagar@xxxxxxxxxxxxxx>
Cc: Balbir Singh <balbir@xxxxxxxxxx>
Cc: Chris Sturtivant <csturtiv@xxxxxxx>
Cc: Tony Ernst <tee@xxxxxxx>
Cc: Guillaume Thouvenin <guillaume.thouvenin@xxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
---

 fs/mpage.c              |    2 ++
 fs/namei.c              |    2 +-
 fs/splice.c             |    4 ++--
 include/linux/pagemap.h |   11 ++++++++++-
 mm/filemap.c            |   13 +++++++------
 mm/readahead.c          |    2 +-
 6 files changed, 23 insertions(+), 11 deletions(-)

diff -puN fs/mpage.c~io-accounting-read-accounting fs/mpage.c
--- a/fs/mpage.c~io-accounting-read-accounting
+++ a/fs/mpage.c
@@ -19,6 +19,7 @@
 #include <linux/bio.h>
 #include <linux/fs.h>
 #include <linux/buffer_head.h>
+#include <linux/task_io_accounting_ops.h>
 #include <linux/blkdev.h>
 #include <linux/highmem.h>
 #include <linux/prefetch.h>
@@ -402,6 +403,7 @@ mpage_readpages(struct address_space *ma
 		list_del(&page->lru);
 		if (!add_to_page_cache(page, mapping,
 					page->index, GFP_KERNEL)) {
+			task_io_account_read(PAGE_CACHE_SIZE);
 			bio = do_mpage_readpage(bio, page,
 					nr_pages - page_idx,
 					&last_block_in_bio, &map_bh,
diff -puN fs/namei.c~io-accounting-read-accounting fs/namei.c
--- a/fs/namei.c~io-accounting-read-accounting
+++ a/fs/namei.c
@@ -2725,7 +2725,7 @@ retry:
 	 * OTOH it's obviously correct and should make the page up-to-date.
 	 */
 	if (!PageUptodate(page)) {
-		err = mapping->a_ops->readpage(NULL, page);
+		err = do_readpage(mapping, NULL, page);
 		if (err != AOP_TRUNCATED_PAGE)
 			wait_on_page_locked(page);
 	} else {
diff -puN fs/splice.c~io-accounting-read-accounting fs/splice.c
--- a/fs/splice.c~io-accounting-read-accounting
+++ a/fs/splice.c
@@ -403,7 +403,7 @@ __generic_file_splice_read(struct file *
 			/*
 			 * need to read in the page
 			 */
-			error = mapping->a_ops->readpage(in, page);
+			error = do_readpage(mapping, in, page);
 			if (unlikely(error)) {
 				/*
 				 * We really should re-lookup the page here,
@@ -625,7 +625,7 @@ find_page:
 		 */
 		if (!PageUptodate(page)) {
 			if (this_len < PAGE_CACHE_SIZE) {
-				ret = mapping->a_ops->readpage(file, page);
+				ret = do_readpage(mapping, file, page);
 				if (unlikely(ret))
 					goto out;
 
diff -puN include/linux/pagemap.h~io-accounting-read-accounting include/linux/pagemap.h
--- a/include/linux/pagemap.h~io-accounting-read-accounting
+++ a/include/linux/pagemap.h
@@ -9,9 +9,11 @@
 #include <linux/list.h>
 #include <linux/highmem.h>
 #include <linux/compiler.h>
-#include <asm/uaccess.h>
+#include <linux/task_io_accounting_ops.h>
 #include <linux/gfp.h>
 
+#include <asm/uaccess.h>
+
 /*
  * Bits in mapping->flags.  The lower __GFP_BITS_SHIFT bits are the page
  * allocation mode flags.
@@ -232,4 +234,11 @@ static inline void fault_in_pages_readab
 	}
 }
 
+static inline int do_readpage(struct address_space *mapping, struct file *file,
+				struct page *page)
+{
+	task_io_account_read(PAGE_CACHE_SIZE);
+	return mapping->a_ops->readpage(file, page);
+}
+
 #endif /* _LINUX_PAGEMAP_H */
diff -puN mm/filemap.c~io-accounting-read-accounting mm/filemap.c
--- a/mm/filemap.c~io-accounting-read-accounting
+++ a/mm/filemap.c
@@ -990,7 +990,7 @@ page_not_up_to_date:
 
 readpage:
 		/* Start the actual read. The read will unlock the page. */
-		error = mapping->a_ops->readpage(filp, page);
+		error = do_readpage(mapping, filp, page);
 
 		if (unlikely(error)) {
 			if (error == AOP_TRUNCATED_PAGE) {
@@ -1311,7 +1311,7 @@ static int fastcall page_cache_read(stru
 
 		ret = add_to_page_cache_lru(page, mapping, offset, GFP_KERNEL);
 		if (ret == 0)
-			ret = mapping->a_ops->readpage(file, page);
+			ret = do_readpage(mapping, file, page);
 		else if (ret == -EEXIST)
 			ret = 0; /* losing race to add is OK */
 
@@ -1483,7 +1483,7 @@ page_not_uptodate:
 		goto success;
 	}
 
-	error = mapping->a_ops->readpage(file, page);
+	error = do_readpage(mapping, file, page);
 	if (!error) {
 		wait_on_page_locked(page);
 		if (PageUptodate(page))
@@ -1514,7 +1514,7 @@ page_not_uptodate:
 		goto success;
 	}
 	ClearPageError(page);
-	error = mapping->a_ops->readpage(file, page);
+	error = do_readpage(mapping, file, page);
 	if (!error) {
 		wait_on_page_locked(page);
 		if (PageUptodate(page))
@@ -1604,7 +1604,7 @@ page_not_uptodate:
 		goto success;
 	}
 
-	error = mapping->a_ops->readpage(file, page);
+	error = do_readpage(mapping, file, page);
 	if (!error) {
 		wait_on_page_locked(page);
 		if (PageUptodate(page))
@@ -1634,7 +1634,7 @@ page_not_uptodate:
 	}
 
 	ClearPageError(page);
-	error = mapping->a_ops->readpage(file, page);
+	error = do_readpage(mapping, file, page);
 	if (!error) {
 		wait_on_page_locked(page);
 		if (PageUptodate(page))
@@ -1774,6 +1774,7 @@ repeat:
 		}
 		page = cached_page;
 		cached_page = NULL;
+		task_io_account_read(PAGE_CACHE_SIZE);
 		err = filler(data, page);
 		if (err < 0) {
 			page_cache_release(page);
diff -puN mm/readahead.c~io-accounting-read-accounting mm/readahead.c
--- a/mm/readahead.c~io-accounting-read-accounting
+++ a/mm/readahead.c
@@ -178,7 +178,7 @@ static int read_pages(struct address_spa
 		list_del(&page->lru);
 		if (!add_to_page_cache(page, mapping,
 					page->index, GFP_KERNEL)) {
-			mapping->a_ops->readpage(filp, page);
+			do_readpage(mapping, filp, page);
 			if (!pagevec_add(&lru_pvec, page))
 				__pagevec_lru_add(&lru_pvec);
 		} else
_

Patches currently in -mm which might be from akpm@xxxxxxxx are

origin.patch
tty-signal-tty-locking.patch
pktcdvd-bio-write-congestion-using-blk_congestion_wait.patch
fsstack-introduce-fsstack_copy_attrinode_.patch
log2-implement-a-general-integer-log2-facility-in-the-kernel.patch
add-process_session-helper-routine-deprecate-old-field.patch
mxser-session-warning-fix.patch
mxser-workqueue-fixes.patch
tty-switch-to-ktermios-and-new-framework.patch
tty-switch-to-ktermios.patch
tty_ioctl-use-termios-for-the-old-structure-and-termios2.patch
drivers-isdn-handcrafted-min-max-macro-removal.patch
fault-injection-capabilities-infrastructure.patch
fault-injection-Kconfig-cleanup.patch
fault-injection-stacktrace-filtering-kconfig-fix.patch
sysctl-fix-sys_sysctl-interface-of-ipc-sysctls.patch
video-get-the-default-mode-from-the-right-database.patch
various-fbdev-files-mark-structs.patch
backlight-lcd-remove-dependenct-from-the-framebuffer-layer.patch
gxfb-fixups-for-the-amd-geode-gx.patch
gxfb-support-flat-panel-timings.patch
gxfb-support-command-line-options.patch
proc_misc-build-fix.patch
revert-generic_file_buffered_write-handle-zero-length-iovec-segments.patch
revert-generic_file_buffered_write-deadlock-on-vectored-write.patch
generic_file_buffered_write-cleanup.patch
mm-fix-pagecache-write-deadlocks.patch
fs-prepare_write-fixes-fuse-fix.patch
fs-prepare_write-fixes-fat-fix.patch
macintosh-mangle-caps-lock-events-on-adb-keyboards.patch
git-acpi.patch
git-acpi-fixup.patch
acpi-dont-select-pm.patch
implementation-of-acpi_video_get_next_level.patch
video-sysfs-support-take-2-add-dev-argument-for-backlight_device_register.patch
sony_apci-resume.patch
video-sysfs-support-take-2-add-dev-argument-for-backlight_device_register-sony_acpi-fix.patch
git-alsa.patch
git-alsa-fixup.patch
alsa-workqueue-fixes.patch
git-cpufreq-prep.patch
git-cpufreq.patch
git-cpufreq-fixup.patch
platform_driver_probe-can-save-codespace-save-codespace.patch
git-drm.patch
git-dvb.patch
git-dvb-fixup.patch
git-input-vs-git-alsa.patch
kbuild-fix-rr-is-now-default.patch
pata_cs5530-suspend-resume-support-tweak.patch
pata_sil680-suspend-resume-tidy.patch
pata_via-suspend-resume-support-fix.patch
pata_it8213-add-new-driver-for-the-it8213-card.patch
git-lxdialog-fixup.patch
git-mmc-fixup.patch
git-mmc-tifm_sd-warning-fix.patch
git-mtd.patch
git-mtd-ssfdc-build-fix.patch
git-ubi.patch
ubi-versus-add-include-linux-freezerh-and-move-definitions-from.patch
update-smc91x-driver-with-arm-versatile-board-info.patch
drivers-net-ns83820c-add-paramter-to-disable-auto.patch
net-use-bitrev8.patch
net-uninline-skb_put.patch
ioat-warning-fix.patch
pci-fix-multiple-problems-with-via-hardware.patch
pci-legacy-resource-fix-tidy.patch
git-s390.patch
s390-workqueue-fixes.patch
drivers-scsi-mca_53c9xc-save_flags-cli-removal.patch
scsi-in2000-scsi_cmnd-convertion.patch
aic79xx-wrong-max-memory-at-driver-init.patch
scsi-cover-up-bugs-fix-up-compiler-warnings-in-megaraid-driver-fix.patch
git-qla3xxx-fixup.patch
nokia-e70-is-an-unusual-device.patch
revert-x86_64-mm-add-genapic_force.patch
revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525.patch
x86_64-fix-boot-hang-due-to-nmi-watchdog-init-code-tidy.patch
x86_64-fix-boot-hang-due-to-nmi-watchdog-init-code-tidy-tidy-2.patch
touchkit-ps-2-touchscreen-driver.patch
node-aware-skb-allocation-fix-for-device-tree-changes.patch
congestion-wait-dont-wait-when-there-are-no-pages-under-writeback.patch
slab-use-a-multiply-instead-of-a-divide-in-obj_to_index-tweaks.patch
deprecate-smbfs-in-favour-of-cifs.patch
edac-new-opteron-athlon64-memory-controller-driver.patch
drivers-add-lcd-support-3-Kconfig-fix.patch
drivers-add-lcd-support-workqueue-fixups.patch
touch_atime-cleanup.patch
ocfs2-relative-atime-support-tweaks.patch
optimize-o_direct-on-block-device-v3-tweak.patch
add-retain_initrd-boot-option-tweak.patch
workqueue-tweaks.patch
workqueue-dont-hold-workqueue_mutex-in-flush_scheduled_work.patch
implement-flush_work.patch
aio-use-flush_work.patch
kblockd-use-flush_work.patch
relayfs-use-flush_keventd_work.patch
tg3-use-flush_keventd_work.patch
e1000-use-flush_keventd_work.patch
libata-use-flush_work.patch
phy-use-flush_work.patch
bridge-avoid-using-noautorel-workqueues.patch
io-accounting-core-statistics.patch
clean-up-__set_page_dirty_nobuffers.patch
io-accounting-write-accounting.patch
io-accounting-write-cancel-accounting.patch
io-accounting-read-accounting-2.patch
io-accounting-read-accounting-nfs-fix.patch
io-accounting-read-accounting-cifs-fix.patch
io-accounting-direct-io.patch
io-accounting-report-in-procfs.patch
cleanup-taskstatsh.patch
io-accounting-via-taskstats.patch
getdelays-various-fixes.patch
io-accounting-add-to-getdelays.patch
move-page-writeback-acounting-out-of-macros.patch
per-backing_dev-dirty-and-writeback-page-accounting.patch
ext2-reservations.patch
bug-test-1.patch
sched-add-option-to-serialize-load-balancing-fix.patch
kernel-schedc-whitespace-cleanups-more.patch
sched2-sched-domain-sysctl-use-ctl_unnumbered.patch
mm-implement-swap-prefetching-use-ctl_unnumbered.patch
swap_prefetch-vs-zoned-counters.patch
add-include-linux-freezerh-and-move-definitions-from-prefetch.patch
readahead-kconfig-options-fix.patch
readahead-minmax_ra_pages.patch
readahead-sysctl-parameters.patch
readahead-sysctl-parameters-use-ctl_unnumbered.patch
readahead-context-based-method-locking-fix.patch
readahead-context-based-method-locking-fix-2.patch
readahead-call-scheme-ifdef-fix.patch
readahead-call-scheme-build-fix.patch
readahead-nfsd-case-fix.patch
make-copy_from_user_inatomic-not-zero-the-tail-on-i386-vs-reiser4.patch
resier4-add-include-linux-freezerh-and-move-definitions-from.patch
make-kmem_cache_destroy-return-void-reiser4.patch
reiser4-hardirq-include-fix.patch
reiser4-run-truncate_inode_pages-in-reiser4_delete_inode.patch
reiser4-get_sb_dev-fix.patch
reiser4-vs-zoned-allocator.patch
reiser4-temp-fix.patch
reiser4-kmem_cache_t-removal.patch
hpt3xx-rework-rate-filtering-tidy.patch
jmicron-warning-fix.patch
md-allow-reads-that-have-bypassed-the-cache-to-be-retried-on-failure-fix.patch
statistics-infrastructure-fix-buffer-overflow-in-histogram-with-linear-tidy.patch
extend-notifier_call_chain-to-count-nr_calls-made.patch
extend-notifier_call_chain-to-count-nr_calls-made-fixes-2.patch
define-and-use-new-eventscpu_lock_acquire-and-cpu_lock_release-fix.patch
eliminate-lock_cpu_hotplug-in-kernel-schedc-fix.patch
gtod-persistent-clock-support-i386.patch
hrtimers-clean-up-locking-fix.patch
updated-hrtimers-state-tracking.patch
updated-i386-convert-to-clock-event-devices.patch
updated-i386-convert-to-clock-event-devices-fix.patch
updated-gtod-mark-tsc-unusable-for-highres-timers.patch
round_jiffies-infrastructure-fix.patch
clocksource-small-cleanup-2-fix.patch
kvm-make-the-vcpu-execution-loop-an-arch-operation-build-fix.patch
kvm-make-__set_efer-an-arch-operation-build-fix.patch
slim-main-include-fix.patch
nr_blockdev_pages-in_interrupt-warning.patch
device-suspend-debug.patch
mutex-subsystem-synchro-test-module-fix.patch
slab-leaks3-default-y.patch
x86-kmap_atomic-debugging.patch
vdso-print-fatal-signals-use-ctl_unnumbered.patch
restore-rogue-readahead-printk.patch
put_bh-debug.patch
e1000-printk-warning-fixes.patch
acpi_format_exception-debug.patch
add-debugging-aid-for-memory-initialisation-problems-fix.patch
zeromap_pte_range-debug.patch
squash-ipc-warnings.patch
squash-udf-warnings.patch

-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux