Re: [PATCH v3 08/20] sg: speed sg_poll and sg_get_num_waiting

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

 



On 2019-08-12 10:31 a.m., Christoph Hellwig wrote:
On Wed, Aug 07, 2019 at 01:42:40PM +0200, Douglas Gilbert wrote:
Track the number of submitted and waiting (for read/receive)
requests on each file descriptor with two atomic integers.
This speeds sg_poll() and ioctl(SG_GET_NUM_WAITING) which
are oft used with the asynchronous (non-blocking) interfaces.

The idea of just tracking a count here seems sensible.

With the added benefit of ioctl(SG_GET_NUM_WAITING) becoming O(1).
I clocked it an 500 nanoseconds per invocation on my laptop.

Tiny nitpick below:

+	else if (likely(sfp->cmd_q))
+		p_res |= EPOLLOUT | EPOLLWRNORM;
+	else if (atomic_read(&sfp->submitted) == 0)
  		p_res |= EPOLLOUT | EPOLLWRNORM;

Why not simply:

	 else if (sfp->cmd_q || atomic_read(&sfp->submitted)
  		p_res |= EPOLLOUT | EPOLLWRNORM;

Loses the "likely", doesn't compile, and is logically wrong.
Brown paper bag :-)


And this is getting beyond a joke. I have had to repeatedly rebuild
dev kernels because:
   1) Torvalds forces Martin to use buggy "rc1" kernels in his
      scsi-queue branches, and
   2) in lk 5.3-rc1 there is your snafu in scsi_lib.c

Please go light on such "optimizations".

Doug Gilbert



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux