Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S264321AbTEGTqQ (ORCPT ); Wed, 7 May 2003 15:46:16 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S264322AbTEGTqQ (ORCPT ); Wed, 7 May 2003 15:46:16 -0400 Received: from mion.elka.pw.edu.pl ([194.29.160.35]:53957 "EHLO mion.elka.pw.edu.pl") by vger.kernel.org with ESMTP id S264321AbTEGTqO (ORCPT ); Wed, 7 May 2003 15:46:14 -0400 Date: Wed, 7 May 2003 21:58:12 +0200 (MET DST) From: Bartlomiej Zolnierkiewicz To: Jens Axboe cc: Linus Torvalds , Linux Kernel Subject: Re: [PATCH] 2.5 ide 48-bit usage In-Reply-To: <20030507175033.GR823@suse.de> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2936 Lines: 79 On Wed, 7 May 2003, Jens Axboe wrote: > On Wed, May 07 2003, Linus Torvalds wrote: > > > > On Wed, 7 May 2003, Jens Axboe wrote: > > > > > > > > And testing. In particular, you might want to test whether a device > > > > properly supports 48-bit addressing, either from the kernel or from user > > > > programs. > > > > > > For that, a forced 48-bit hwif->addressing inherited by drives will > > > suffice. And I agree, we should have that. > > > > No no no. > > > > You definitely do NOT want to set "hwif->addressing" to 1 before you've > > tested whether it even _works_. > > Well duh, of course not. Whether a given request is executed in 48-bit > or not is a check that _includes_ drive capabilities too of course. Yeah, we test drive capabilities properly in idedisk_setup(), but Linus is right speaking about _hwif_ capabilities. Jens you your patch sets hwif->rqsize to 65535 in setup-pci.c for all PCI hwifs which is simply wrong as not all of them supports LBA48. You should check for hwif->addressing and if true set rqsize to 65536 (not 65535) and not in IDE PCI code but in ide_init_queue() in ide-probe.c. I also think that max request size should be printed for all drives, not only 48-bit capable. > > Imagine something like "hdparm" - other things are already in progress, > > the system is up, and IDE commands are potentially executing concurrently. > > What something like that wants to do is to send one request out to check > > whether 48-bit addressing works, but it absolutely does NOT want to set > > some interface-global flag that affects other commands. > > Then it just puts a taskfile request on the request queue and lets it > reach the drive, nicely syncronized with the other requests. There's no > need to toggle any special bits for that. Yes, but patch subtly breakes taskfile :-). Taskfile ioctl uses do_rw_taskfile() or flagged_taskfile(). Patch replaces drive->adrressing checks by task->addressing, but ide_taskfile_ioctl() doesn't know about it so task->addressing will be always equal 0. You should add checking for 48-bit commands and setting task->addressing to 1 if neccessary to ide_taskfile_ioctl(). Also changes for pdc202xx_old.c are wrong, we should check for task->addressing not rq_lba48(rq) as taskfile requests also use this codepath. Patch also misses updates for many uses of drive->addressing (in ide.c, ide-io.c, icside.c, ide-tcq.c and even in ide-taskfile.c). > > Only after it has verified that 48-bit addressing does work should it set > > the global flag. > > Sounds fine. Jens, I like the general idea of the patch, but it needs some more work. Linus, please don't apply for now. -- Bartlomiej > -- > Jens Axboe - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/