From owner-freebsd-geom@FreeBSD.ORG Thu Jul 10 14:42:17 2008 Return-Path: Delivered-To: freebsd-geom@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A0523106564A for ; Thu, 10 Jul 2008 14:42:17 +0000 (UTC) (envelope-from mark@legios.org) Received: from bade.legios.org (ppp198-172.static.internode.on.net [59.167.198.172]) by mx1.freebsd.org (Postfix) with ESMTP id 2EA808FC20 for ; Thu, 10 Jul 2008 14:42:17 +0000 (UTC) (envelope-from mark@legios.org) Received: from localhost (unknown [192.168.0.17]) by bade.legios.org (Postfix) with ESMTP id C5F451AD71E for ; Fri, 11 Jul 2008 00:41:54 +1000 (EST) X-Virus-Scanned: amavisd-new at legios.org Received: from bade.legios.org ([192.168.0.17]) by localhost (legios.org [192.168.0.17]) (amavisd-new, port 10024) with ESMTP id PsipiAQJdnFh for ; Fri, 11 Jul 2008 00:41:39 +1000 (EST) Received: from [192.168.0.200] (unknown [192.168.0.200]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by bade.legios.org (Postfix) with ESMTP id 61EF01AD6F5 for ; Fri, 11 Jul 2008 00:41:39 +1000 (EST) From: Mark Gladman To: freebsd-geom@freebsd.org Date: Fri, 11 Jul 2008 00:39:41 +1000 User-Agent: KMail/1.9.7 References: <482257ad0807100541s2d2c3d1eo6cd57c3a1bc338d1@mail.gmail.com> <200807102309.03191.mark@legios.org> <482257ad0807100655u1a5c660awfad05564e40e9a95@mail.gmail.com> In-Reply-To: <482257ad0807100655u1a5c660awfad05564e40e9a95@mail.gmail.com> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200807110039.42114.mark@legios.org> Subject: Re: Can GEOM be used to intercept the I/o calls to an existing mounted device? X-BeenThere: freebsd-geom@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: GEOM-specific discussions and implementations List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Jul 2008 14:42:17 -0000 Ah, I see what you mean... Not as far as I'm aware - although there's people here much more knowledgeable on the subject than me. You can write the geom metadata to the mounted disk(s) by settings the following sysctl kern.geom.debugflags=16 (This is potentially unsafe, but for what you're doing it should be fine) Out of curiosities sake though, I did the follwing. (note - I had to do this on a zvol on this workstation, so hopefully it's not invalid) mount /dev/zvol/zpool0/test /mnt sysctl kern.geom.debugflags=16 gmirror label -v -n -b round-robin gm0 /dev/zvol/zpool0/test kldload geom_mirror However, if I then do mount /dev/mirror/test0 /mnt2 Then do *anything* involving /mnt2, it causes FreeBSD to keel over - not totally unexpected. I'm not sure if this helps - hopefully others can chime in. On Thursday 10 July 2008 23:55:40 Tapan Chaudhari wrote: > Thanks Mark, but unmounting will anyways work. But the problem here will > be, a new device "/dev/mirror/gm0" and "/dev/mirror/gm0s1" will be created > after > > :- > > #gmirror label -v -n -b round-robin gm0 /dev/md0 > #gmirror load > #gmirror configure -a gm0 > > and "/dev/md0s1" gets deleted. > Now I will have to mount the new device "/dev/mirror/gm0s1" to get my > original contents. > Can't I do it on the fly while the device is already mounted? I just want > that all the calls going to the device "/dev/md0s1" first come to me and > then it goes to the original device. In short intercepting the i/o calls. > Is there some way I can achieve this? > > Thanks, > > On Thu, Jul 10, 2008 at 6:39 PM, Mark Gladman wrote: > > On Thursday 10 July 2008 22:41:25 Tapan Chaudhari wrote: > > > Hi All, > > > I am a newbie to FreeBSD and GEOM. I wanted to intercept the i/o > > > > calls > > > > > going to a particular mounted device by writing some driver. > > > I came across geom and thought it might work. I tried to create a new > > > device, mount it and then tried using gmirror to mirror the device :- > > > > > > #dd if=/dev/zero of=file1 bs=1M count=10 > > > #dd if=/dev/zero of=file2 bs=1M count=10 > > > #mdconfig -f file1 > > > #mdconfig -f file2 > > > #fdisk -B /dev/mirror/md0 > > > #newfs /dev/mirror/md0s1 > > > #mkdir /mnt/mirror0 > > > #mount /dev/mirror/md0s1 /mnt/mirror0/ > > > > > > #gmirror label -v -n -b round-robin gm0 /dev/md0 > > > gmirror: Can't store metadata on /dev/md0: Operation not permitted. > > > > > > It gave me this error "gmirror: Can't store metadata on /dev/md0: > > > > Operation > > > > > not permitted." > > > > > > Am I doing something wrong? Or GEOM does not permit me intercept the > > > i/o calls? If not geom, is there any other mechanism by which I can > > > achieve > > > > it? > > > > > Thanks, > > > --Tapan. > > > _______________________________________________ > > > freebsd-geom@freebsd.org mailing list > > > http://lists.freebsd.org/mailman/listinfo/freebsd-geom > > > To unsubscribe, send any mail to "freebsd-geom-unsubscribe@freebsd.org" > > > > Hey, > > > > You're attempting to set up gmirror on a mounted device. > > Unmount /dev/mirror/md0s1 then retry the gmirror command and it should > > work. > > > > Cheers! > > Mark > > _______________________________________________ > freebsd-geom@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-geom > To unsubscribe, send any mail to "freebsd-geom-unsubscribe@freebsd.org"