lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 17 Nov 2022 00:09:00 +0530
From:   "Ritesh Harjani (IBM)" <ritesh.list@...il.com>
To:     Christoph Hellwig <hch@....de>
Cc:     Namjae Jeon <linkinjeon@...nel.org>,
        Sungjong Seo <sj1557.seo@...sung.com>,
        Jan Kara <jack@...e.com>,
        OGAWA Hirofumi <hirofumi@...l.parknet.co.jp>,
        Mikulas Patocka <mikulas@...ax.karlin.mff.cuni.cz>,
        Dave Kleikamp <shaggy@...nel.org>,
        Bob Copeland <me@...copeland.com>,
        linux-fsdevel@...r.kernel.org, linux-ext4@...r.kernel.org,
        jfs-discussion@...ts.sourceforge.net,
        linux-karma-devel@...ts.sourceforge.net, linux-mm@...ck.org
Subject: Re: start removing writepage instances

On 22/11/13 05:28PM, Christoph Hellwig wrote:
> Hi all,
> 
> The VM doesn't need or want ->writepage for writeback and is fine with
> just having ->writepages as long as ->migrate_folio is implemented.

Ok, so here is, (what I think) is the motivation for doing this. 
Please correct me if this is incorrect... 
1. writepage is mainly called from pageout, which happens as part of the memory
   reclaim. Now IIUC from previous discussions [1][2][3], reclaims happens from
   the tail end of the LRU list which could do an I/O of a single page while 
   an ongoing writeback was in progress of multiple pages. This disrupts the I/O 
   pattern to become more random in nature, compared to, if we would have let 
   writeback/flusher do it's job of writing back dirty pages.

   Also many filesystems behave very differently within their ->writepage calls,
   e.g. ext4 doesn't actually write in ->writepage for DELAYED blocks.

2. Now the other place from where ->writepage can be called from is, writeout()
   function, which is a fallback function for migration (fallback_migrate_folio()).
   fallback_migrate_folio() is called from move_to_new_folio() if ->migrate_folio 
   is not defined for the FS.

So what you are doing here is removing the ->writepage from address_space
operations of the filesystems which implements ->writepage using
block_write_full_page() (i.e. those who uses buffer_heads). This is done for 
those FS who already have ->migrate_folio() implemented (hence no need of
->writepage).
...Now this is also a step towards reducing the callers from kernel which uses
buffer_heads.

[1]: https://lore.kernel.org/all/1310567487-15367-1-git-send-email-mgorman@suse.de/
[2]: https://lore.kernel.org/all/20181107063127.3902-2-david@fromorbit.com/
[3]: https://lore.kernel.org/all/1271117878-19274-1-git-send-email-david@fromorbit.com/

Is above a correct understanding?

> 
> This series removes all ->writepage instances that use
> block_write_full_page directly and also have a plain mpage_writepages
> based ->writepages.

Ok.


> 
> Diffstat:
>  fs/exfat/inode.c   |    9 ++-------
>  fs/ext2/inode.c    |    6 ------
>  fs/fat/inode.c     |    9 ++-------
>  fs/hfs/inode.c     |    2 +-
>  fs/hfsplus/inode.c |    2 +-
>  fs/hpfs/file.c     |    9 ++-------
>  fs/jfs/inode.c     |    7 +------
>  fs/omfs/file.c     |    7 +------
>  fs/udf/inode.c     |    7 +------
>  9 files changed, 11 insertions(+), 47 deletions(-)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ