Re: [PATCH v2 00/13] removing the on-stack struct request

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

 



Hi, thanks for the comments,

On Fri, 2 May 2008 16:04:54 +0200
Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> wrote:

> Hi,
> 
> On Thu, May 01, 2008 at 09:27:57PM +0900, FUJITA Tomonori wrote:
> > This is an updated version of the patchset to clean up the asymmetry
> > of blk_get/put_request usage:
> > 
> > http://marc.info/?l=linux-ide&m=120882410712466&w=2
> > 
> > This patchset removes the code calling blk_put_request against the
> > requests that are not allocated via blk_get_request. They can use
> > __GFP_WAIT allocation so we can easily convert them to
> > use blk_get/put_request properly.
> > 
> > This patchset enables us to remove the following hack in
> > blk_put_request:
> > 
> > /*
> >  * Gee, IDE calls in w/ NULL q.  Fix IDE and remove the
> >  * following if (q) test.
> >  */
> > if (q) {
> > 	spin_lock_irqsave(q->queue_lock, flags);
> > 	__blk_put_request(q, req);
> > 	spin_unlock_irqrestore(q->queue_lock, flags);
> > }
> > 
> > The major changes are:
> > 
> > - I remove the ide_wait/head_wait path in ide_do_drive_cmd(). It does
> > the same thing that blk_execute_rq() does.
> 
> Are you sure about that? Not that I'm that familiar with the blk layer internals
> but at a glance blk_execute_rq() calls blk_execute_rq_nowait() and in it, the
> rq is added to the elevator and the device queue is being plugged (4th arg
> to __elv_add_request(...,1)) and after the last returns the device is being
> unplugged again: __generic_unplug_device(q). This way no rq's are getting merged
> and it might hurt performance, IMHO.

Yes, no requests are merged, but

1. the ide_wait/head_wait path in ide_do_drive_cmd() doesn't handle any
mergeable requests. All the requests are for kinda management. We like
to execute such as soon as possible.

2. I don't think that ide_do_drive_cmd merges requests. In case of
ELEVATOR_INSERT_FRONT, it calls ide_do_request right after
elv_insert. ide_do_request takes a request from the queue and executes
it? In case of ELEVATOR_INSERT_BACK, elv_insert calls q->request_fn,
that is, ide_do_request is called.
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux