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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 3 May 2016 08:43:52 -0600
From:	Ross Zwisler <ross.zwisler@...ux.intel.com>
To:	Jan Kara <jack@...e.cz>
Cc:	Christoph Hellwig <hch@...radead.org>,
	Toshi Kani <toshi.kani@....com>, dan.j.williams@...el.com,
	david@...morbit.com, boaz@...xistor.com, tytso@....edu,
	adilger.kernel@...ger.ca, ross.zwisler@...ux.intel.com,
	micah.parrish@....com, linux-nvdimm@...1.01.org,
	linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 1/3] ext4: Add alignment check for DAX mount

On Tue, May 03, 2016 at 11:00:21AM +0200, Jan Kara wrote:
> On Tue 03-05-16 01:44:10, Christoph Hellwig wrote:
> > Please come up with a version that doesn't require tons of boilerplate
> > code in every file system.
> 
> Well, I was thinking about some helper as well but we could save ~4 lines
> with that and that didn't seem significant to me. Most of the lines is
> actually reporting appropriate mount error in dmesg and that is
> fs-dependent so it needs to stay in the filesystem... So what do you have
> in mind?

I guess if you wanted to reduce the code needed in each filesystem, you could
avoid having different error messages for each of the failure conditions, and
just print the error value.  All the error cases caught by the current code are
unique, so we aren't losing any information.  The resulting patch for ext4
would look like this:

@@ -3416,14 +3416,19 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
        }
 
        if (sbi->s_mount_opt & EXT4_MOUNT_DAX) {
+               struct blk_dax_ctl dax = {
+                       .sector = 0,
+                       .size = PAGE_SIZE,
+               };
                if (blocksize != PAGE_SIZE) {
                        ext4_msg(sb, KERN_ERR,
                                        "error: unsupported blocksize for dax");
                        goto failed_mount;
                }
-               if (!sb->s_bdev->bd_disk->fops->direct_access) {
+               err = bdev_direct_access(sb->s_bdev, &dax);
+               if (err < 0) {
                        ext4_msg(sb, KERN_ERR,
-                                       "error: device does not support dax");
+                                       "error: dax access failed (%d)", err);
                        goto failed_mount;
                }
        }

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ