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]
Message-ID: <20130821161408.GB30848@infradead.org>
Date:	Wed, 21 Aug 2013 09:14:08 -0700
From:	Christoph Hellwig <hch@...radead.org>
To:	"Nicholas A. Bellinger" <nab@...erainc.com>
Cc:	target-devel <target-devel@...r.kernel.org>,
	lkml <linux-kernel@...r.kernel.org>,
	linux-scsi <linux-scsi@...r.kernel.org>,
	Christoph Hellwig <hch@....de>, Hannes Reinecke <hare@...e.de>,
	Martin Petersen <martin.petersen@...cle.com>,
	Chris Mason <chris.mason@...ionio.com>,
	James Bottomley <JBottomley@...allels.com>,
	Nicholas Bellinger <nab@...ux-iscsi.org>
Subject: Re: [PATCH 8/9] target: Add support for COMPARE_AND_WRITE emulation

I don't like the layering here.  The re-execution of the same command
for both reading and writing the data from/to the backend device already
looks sketchy here due to doubling work of task attribute handling, the
various state bits, etc.  And it will only get more complicated when
the required locking is added.  In addition we have all that confusion
about overloading the data direction.

I think the way this should be handled is:


 - cmd->execute_cmd gets set to a new sbc_emulate_compare_and_write
 - sbc_emulate_compare_and_write does all the setup for the locking,
   sets up the read buffer, then calls ops->execute_rw to do the
   read.  The complete callback does the comparism, then calls
   ops->execute_rw to do the write, and the second time we hit
   the complete callback we teard down the read buffer, stop the
   locking, etc.

This also avoids bloating the command with another function pointer
or having to change all execute_cmd prototypes.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ