On Thu, Sep 27, 2007 at 06:55:26PM +0200, Gábriel Ákos wrote:

> Az lehet. De hadd en tudjam jobban (lehessen vhogy megmondani)...
> Masreszt meg scsiadd -dal kiveve, tehat a device-t a kernel is hajlando
> elengedni, majd visszatenni, ekkor is ugyanez az eredmeny.

Ok, nezzunk egy kiserletet:

1. Ellenorizd, hogy nem fut sem hal, sem mas ami automatikusan
   mountolgatni akar
2. Dugj be egy pendrive-ot, es vard meg, amig megjelenik a device (nalam
   eppen sdi)
3. Forditsd le a kovetkezo roppant elmes programot mondjuk "drivelock"
   neven:

        #include <fcntl.h>
        int main(int argc, const char *argv[])
        {
                open(argv[1], O_RDWR | O_EXCL);
                for (;;)
                        sleep(1);
        }

4. Inditsd el (root-kent): "./drivelock /dev/sdi", es hagyd futni
5. Huzd ki a pendrive-ot es dugd vissza
6. Nicsak, sdj lett belole...
7. Jojjon az "scsiadd -r 11 0 0 0" (vagy ami nalad az eredeti device-hoz
   tartozik)
8. Huzd ki a pendrive-ot es dugd vissza - meg mindig sdj
9. Lodd le a drivelock-ot
10. Huzd ki, dugd vissza, es lass csodat, sdi lett belole ismet

Az "scsiadd -r" csak azt mondja a kernelnek, hogy a drive _fizikailag_
eltunt. Mint mar mondtam, ez a _logikai_ foglaltsagot NEM SZUNTETI MEG.
Kicsit hasonlit ahhoz, hogy hiaba torolsz egy file-t, ha egy program
nyitva tartja, akkor tovabb tudja hasznalni.

A helyes SATA hotunplug/hotplug sorrend:

1. Gondoskodj arrol, hogy a diszket _semmi_ nem hasznalja: nincs
   mountolva, nem resze RAID tombnek (a FAILED nem eleg, ki kell
   szedni), nincs device mapper alatt (pvremove), semmi nem tartja
   nyitva a device node-ot stb.
2. Ha a SATA chipseted nem tud hotplug interruptot generalni vagy a
   kernel driver nem tamogatja a hotplug interruptot, akkor add ki a
   megfelelo "scsiadd -r" parancsot
3. Ha a diszk meg nem szemet es nincs olyan backplane-ed ami megcsinalja
   helyetted, akkor kuldd el a diszket aludni (hdparm -Y) hogy a fejet
   megkimeld a veszparkolastol
4. Huzd ki a diszket
5. Dugd be az uj diszket
6. Ha a chipset vagy a kernel driver nem tud hotplug interruptot, akkor
   futtass egy "scsiadd -s"-t a megfelelo buszra
7. Vedd hasznalatba az eszkozt

Gabor

-- 
     ---------------------------------------------------------
     MTA SZTAKI Computer and Automation Research Institute
                Hungarian Academy of Sciences
     ---------------------------------------------------------
_________________________________________________
linux lista      -      [email protected]
http://mlf2.linux.rulez.org/mailman/listinfo/linux

válasz