Changeset fe5d5c8


Ignore:
Timestamp:
07/24/13 12:18:51 (17 months ago)
Author:
Kris Moore <kris@…>
Branches:
master, 9.2-release, releng/10.0, releng/10.0.1, releng/10.0.2, releng/10.0.3, releng/10.1
Children:
faf5d5c
Parents:
7381613
Message:

Add option to pc-sysinstal and to install GUI to enable / disable
the forcing of ZFS 4k block sizes

This will fix some issues where drives wont boot from the 4K size, or
GRUB cannot locate the zpool on GPT

Files:
7 edited

Legend:

Unmodified
Added
Removed
  • src-qt4/pc-installgui/installer.cpp

    reec2eb4 rfe5d5c8  
    1616    translator = new QTranslator(); 
    1717    haveWarnedSpace=false; 
     18    force4K = false; 
    1819 
    1920    connect(abortButton, SIGNAL(clicked()), this, SLOT(slotAbort())); 
     
    473474  wDisk->programInit(); 
    474475  wDisk->setWindowModality(Qt::ApplicationModal); 
    475   connect(wDisk, SIGNAL(saved(QList<QStringList>, bool, bool, QString)), this, SLOT(slotSaveDiskChanges(QList<QStringList>, bool, bool, QString))); 
     476  connect(wDisk, SIGNAL(saved(QList<QStringList>, bool, bool, QString, bool)), this, SLOT(slotSaveDiskChanges(QList<QStringList>, bool, bool, QString, bool))); 
    476477  wDisk->show(); 
    477478  wDisk->raise(); 
     
    504505} 
    505506 
    506 void Installer::slotSaveDiskChanges(QList<QStringList> newSysDisks, bool MBR, bool GPT, QString zName) 
     507void Installer::slotSaveDiskChanges(QList<QStringList> newSysDisks, bool MBR, bool GPT, QString zName, bool zForce ) 
    507508{ 
    508509 
    509510  zpoolName = zName;  
     511  force4K = zForce; 
    510512 
    511513  // Save the new disk layout 
     
    789791  if ( ! zpoolName.isEmpty() ) 
    790792    tmpList << "zpoolName=" + zpoolName; 
     793 
     794  // Are we force enabling ZFS 4K block sizes? 
     795  if ( force4K ) 
     796    tmpList << "zfsForce4k=YES"; 
    791797   
    792798  // Networking setup 
  • src-qt4/pc-installgui/installer.h

    reec2eb4 rfe5d5c8  
    4848    // Disk slots 
    4949    void slotDiskCustomizeClicked(); 
    50     void slotSaveDiskChanges(QList<QStringList>, bool, bool, QString); 
     50    void slotSaveDiskChanges(QList<QStringList>, bool, bool, QString, bool); 
    5151 
    5252    // Slots for the installation 
     
    173173    QString zpoolName; 
    174174 
     175    // Force 4K mode? 
     176    bool force4K; 
     177 
    175178protected: 
    176179    void closeEvent(QCloseEvent *event); 
  • src-qt4/pc-installgui/wizardDisk.cpp

    reec2eb4 rfe5d5c8  
    9797{ 
    9898  bool useGPT = false; 
     99  bool force4K = false; 
    99100  QString zpoolName; 
    100101  if (comboPartition->currentIndex() == 0 ) 
     
    105106    useGPT = true; 
    106107 
     108  // When doing advanced ZFS setups, check if 4K is enabled 
     109  if ( radioAdvanced->isChecked() && checkForce4K->isChecked() ) 
     110    force4K = true; 
     111 
    107112  if ( radioAdvanced->isChecked() && groupZFSPool->isChecked() ) 
    108113     zpoolName = lineZpoolName->text(); 
    109114 
    110115  if ( radioExpert->isChecked() ) 
    111     emit saved(sysFinalDiskLayout, false, false, zpoolName); 
     116    emit saved(sysFinalDiskLayout, false, false, zpoolName, force4K); 
    112117  else 
    113     emit saved(sysFinalDiskLayout, true, useGPT, zpoolName); 
     118    emit saved(sysFinalDiskLayout, true, useGPT, zpoolName, force4K); 
    114119  close(); 
    115120} 
     
    123128       if (radioBasic->isChecked()) { 
    124129         checkGPT->setVisible(false); 
     130         checkForce4K->setVisible(false); 
    125131         groupZFSPool->setVisible(false); 
    126132       } 
    127133       if (radioAdvanced->isChecked()) { 
    128134         checkGPT->setVisible(true); 
     135         checkForce4K->setVisible(true); 
    129136         groupZFSPool->setVisible(true); 
    130137       } 
     
    201208         return true; 
    202209     case Page_BasicDisk: 
    203          if ( comboPartition->currentIndex() == 0  && radioAdvanced->isChecked()) 
     210         if ( comboPartition->currentIndex() == 0  && radioAdvanced->isChecked()) { 
    204211           checkGPT->setVisible(true); 
    205          else 
     212           checkForce4K->setVisible(true); 
     213         } else { 
    206214           checkGPT->setVisible(false); 
     215           checkForce4K->setVisible(false); 
     216         } 
    207217 
    208218         // Doing a Advanced install 
  • src-qt4/pc-installgui/wizardDisk.h

    reec2eb4 rfe5d5c8  
    8787 
    8888signals: 
    89     void saved(QList<QStringList>, bool, bool, QString); 
     89    void saved(QList<QStringList>, bool, bool, QString, bool); 
    9090 
    9191} ; 
  • src-qt4/pc-installgui/wizardDisk.ui

    reec2eb4 rfe5d5c8  
    191191  <widget class="QWizardPage" name="Page_BasicDisk"> 
    192192   <layout class="QGridLayout" name="gridLayout_11"> 
    193     <item row="3" column="1"> 
    194      <layout class="QGridLayout" name="gridLayout_3"> 
    195       <item row="0" column="0"> 
    196        <widget class="QComboBox" name="comboDisk"> 
    197         <property name="sizePolicy"> 
    198          <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> 
    199           <horstretch>0</horstretch> 
    200           <verstretch>0</verstretch> 
    201          </sizepolicy> 
    202         </property> 
    203        </widget> 
    204       </item> 
    205       <item row="0" column="1"> 
    206        <widget class="QLabel" name="label_5"> 
    207         <property name="sizePolicy"> 
    208          <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> 
    209           <horstretch>0</horstretch> 
    210           <verstretch>0</verstretch> 
    211          </sizepolicy> 
    212         </property> 
    213         <property name="text"> 
    214          <string>Selected Disk</string> 
    215         </property> 
    216        </widget> 
    217       </item> 
    218       <item row="1" column="0"> 
    219        <widget class="QComboBox" name="comboPartition"> 
    220         <property name="sizePolicy"> 
    221          <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> 
    222           <horstretch>0</horstretch> 
    223           <verstretch>0</verstretch> 
    224          </sizepolicy> 
    225         </property> 
    226        </widget> 
    227       </item> 
    228       <item row="1" column="1"> 
    229        <widget class="QLabel" name="label_6"> 
    230         <property name="sizePolicy"> 
    231          <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> 
    232           <horstretch>0</horstretch> 
    233           <verstretch>0</verstretch> 
    234          </sizepolicy> 
    235         </property> 
    236         <property name="text"> 
    237          <string>Selected Partition</string> 
    238         </property> 
    239        </widget> 
    240       </item> 
    241      </layout> 
    242     </item> 
    243     <item row="4" column="1"> 
    244      <spacer name="verticalSpacer_17"> 
    245       <property name="orientation"> 
    246        <enum>Qt::Vertical</enum> 
    247       </property> 
    248       <property name="sizeHint" stdset="0"> 
    249        <size> 
    250         <width>20</width> 
    251         <height>40</height> 
    252        </size> 
    253       </property> 
    254      </spacer> 
    255     </item> 
    256     <item row="5" column="1"> 
    257      <widget class="QCheckBox" name="checkGPT"> 
    258       <property name="text"> 
    259        <string>Partition disk with GPT</string> 
    260       </property> 
    261      </widget> 
    262     </item> 
    263     <item row="7" column="1"> 
    264      <spacer name="verticalSpacer_6"> 
    265       <property name="orientation"> 
    266        <enum>Qt::Vertical</enum> 
    267       </property> 
    268       <property name="sizeHint" stdset="0"> 
    269        <size> 
    270         <width>387</width> 
    271         <height>43</height> 
    272        </size> 
    273       </property> 
    274      </spacer> 
    275     </item> 
    276     <item row="0" column="1"> 
    277      <spacer name="verticalSpacer_5"> 
     193    <item row="1" column="2" rowspan="8"> 
     194     <spacer name="horizontalSpacer_3"> 
     195      <property name="orientation"> 
     196       <enum>Qt::Horizontal</enum> 
     197      </property> 
     198      <property name="sizeType"> 
     199       <enum>QSizePolicy::Fixed</enum> 
     200      </property> 
     201      <property name="sizeHint" stdset="0"> 
     202       <size> 
     203        <width>17</width> 
     204        <height>256</height> 
     205       </size> 
     206      </property> 
     207     </spacer> 
     208    </item> 
     209    <item row="2" column="1"> 
     210     <spacer name="verticalSpacer_4"> 
    278211      <property name="orientation"> 
    279212       <enum>Qt::Vertical</enum> 
     
    290223     </spacer> 
    291224    </item> 
    292     <item row="1" column="1"> 
    293      <widget class="QLabel" name="label_4"> 
    294       <property name="sizePolicy"> 
    295        <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> 
    296         <horstretch>0</horstretch> 
    297         <verstretch>0</verstretch> 
    298        </sizepolicy> 
    299       </property> 
    300       <property name="text"> 
    301        <string>Please select the disk or partition you wish to install onto. Please note that BSD can only be installed to an entire disk, or primary partition larger than 10GB. </string> 
    302       </property> 
    303       <property name="wordWrap"> 
    304        <bool>true</bool> 
    305       </property> 
    306      </widget> 
    307     </item> 
    308     <item row="0" column="0" rowspan="8"> 
    309      <layout class="QVBoxLayout" name="verticalLayout_4"> 
    310       <item> 
    311        <widget class="QLabel" name="label_3"> 
    312         <property name="sizePolicy"> 
    313          <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> 
    314           <horstretch>0</horstretch> 
    315           <verstretch>0</verstretch> 
    316          </sizepolicy> 
    317         </property> 
    318         <property name="maximumSize"> 
    319          <size> 
    320           <width>55</width> 
    321           <height>55</height> 
    322          </size> 
    323         </property> 
    324         <property name="text"> 
    325          <string/> 
    326         </property> 
    327         <property name="pixmap"> 
    328          <pixmap resource="sysinstaller.qrc">:/modules/images/disk.png</pixmap> 
    329         </property> 
    330         <property name="scaledContents"> 
    331          <bool>true</bool> 
    332         </property> 
    333         <property name="alignment"> 
    334          <set>Qt::AlignCenter</set> 
    335         </property> 
    336        </widget> 
    337       </item> 
    338       <item> 
    339        <spacer name="verticalSpacer_11"> 
    340         <property name="orientation"> 
    341          <enum>Qt::Vertical</enum> 
    342         </property> 
    343         <property name="sizeHint" stdset="0"> 
    344          <size> 
    345           <width>20</width> 
    346           <height>40</height> 
    347          </size> 
    348         </property> 
    349        </spacer> 
    350       </item> 
    351      </layout> 
    352     </item> 
    353     <item row="1" column="2" rowspan="7"> 
    354      <spacer name="horizontalSpacer_3"> 
    355       <property name="orientation"> 
    356        <enum>Qt::Horizontal</enum> 
    357       </property> 
    358       <property name="sizeType"> 
    359        <enum>QSizePolicy::Fixed</enum> 
    360       </property> 
    361       <property name="sizeHint" stdset="0"> 
    362        <size> 
    363         <width>17</width> 
    364         <height>256</height> 
    365        </size> 
    366       </property> 
    367      </spacer> 
    368     </item> 
    369     <item row="2" column="1"> 
    370      <spacer name="verticalSpacer_4"> 
    371       <property name="orientation"> 
    372        <enum>Qt::Vertical</enum> 
    373       </property> 
    374       <property name="sizeType"> 
    375        <enum>QSizePolicy::Fixed</enum> 
    376       </property> 
    377       <property name="sizeHint" stdset="0"> 
    378        <size> 
    379         <width>387</width> 
    380         <height>18</height> 
    381        </size> 
    382       </property> 
    383      </spacer> 
    384     </item> 
    385     <item row="6" column="1"> 
     225    <item row="7" column="1"> 
    386226     <widget class="QGroupBox" name="groupZFSPool"> 
    387227      <property name="font"> 
     
    415255       </item> 
    416256      </layout> 
     257     </widget> 
     258    </item> 
     259    <item row="1" column="1"> 
     260     <widget class="QLabel" name="label_4"> 
     261      <property name="sizePolicy"> 
     262       <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> 
     263        <horstretch>0</horstretch> 
     264        <verstretch>0</verstretch> 
     265       </sizepolicy> 
     266      </property> 
     267      <property name="text"> 
     268       <string>Please select the disk or partition you wish to install onto. Please note that BSD can only be installed to an entire disk, or primary partition larger than 10GB. </string> 
     269      </property> 
     270      <property name="wordWrap"> 
     271       <bool>true</bool> 
     272      </property> 
     273     </widget> 
     274    </item> 
     275    <item row="0" column="1"> 
     276     <spacer name="verticalSpacer_5"> 
     277      <property name="orientation"> 
     278       <enum>Qt::Vertical</enum> 
     279      </property> 
     280      <property name="sizeType"> 
     281       <enum>QSizePolicy::Fixed</enum> 
     282      </property> 
     283      <property name="sizeHint" stdset="0"> 
     284       <size> 
     285        <width>387</width> 
     286        <height>18</height> 
     287       </size> 
     288      </property> 
     289     </spacer> 
     290    </item> 
     291    <item row="0" column="0" rowspan="9"> 
     292     <layout class="QVBoxLayout" name="verticalLayout_4"> 
     293      <item> 
     294       <widget class="QLabel" name="label_3"> 
     295        <property name="sizePolicy"> 
     296         <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> 
     297          <horstretch>0</horstretch> 
     298          <verstretch>0</verstretch> 
     299         </sizepolicy> 
     300        </property> 
     301        <property name="maximumSize"> 
     302         <size> 
     303          <width>55</width> 
     304          <height>55</height> 
     305         </size> 
     306        </property> 
     307        <property name="text"> 
     308         <string/> 
     309        </property> 
     310        <property name="pixmap"> 
     311         <pixmap resource="sysinstaller.qrc">:/modules/images/disk.png</pixmap> 
     312        </property> 
     313        <property name="scaledContents"> 
     314         <bool>true</bool> 
     315        </property> 
     316        <property name="alignment"> 
     317         <set>Qt::AlignCenter</set> 
     318        </property> 
     319       </widget> 
     320      </item> 
     321      <item> 
     322       <spacer name="verticalSpacer_11"> 
     323        <property name="orientation"> 
     324         <enum>Qt::Vertical</enum> 
     325        </property> 
     326        <property name="sizeHint" stdset="0"> 
     327         <size> 
     328          <width>20</width> 
     329          <height>40</height> 
     330         </size> 
     331        </property> 
     332       </spacer> 
     333      </item> 
     334     </layout> 
     335    </item> 
     336    <item row="4" column="1"> 
     337     <spacer name="verticalSpacer_17"> 
     338      <property name="orientation"> 
     339       <enum>Qt::Vertical</enum> 
     340      </property> 
     341      <property name="sizeHint" stdset="0"> 
     342       <size> 
     343        <width>20</width> 
     344        <height>40</height> 
     345       </size> 
     346      </property> 
     347     </spacer> 
     348    </item> 
     349    <item row="5" column="1"> 
     350     <widget class="QCheckBox" name="checkGPT"> 
     351      <property name="text"> 
     352       <string>Partition disk with GPT</string> 
     353      </property> 
     354     </widget> 
     355    </item> 
     356    <item row="3" column="1"> 
     357     <layout class="QGridLayout" name="gridLayout_3"> 
     358      <item row="0" column="0"> 
     359       <widget class="QComboBox" name="comboDisk"> 
     360        <property name="sizePolicy"> 
     361         <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> 
     362          <horstretch>0</horstretch> 
     363          <verstretch>0</verstretch> 
     364         </sizepolicy> 
     365        </property> 
     366       </widget> 
     367      </item> 
     368      <item row="0" column="1"> 
     369       <widget class="QLabel" name="label_5"> 
     370        <property name="sizePolicy"> 
     371         <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> 
     372          <horstretch>0</horstretch> 
     373          <verstretch>0</verstretch> 
     374         </sizepolicy> 
     375        </property> 
     376        <property name="text"> 
     377         <string>Selected Disk</string> 
     378        </property> 
     379       </widget> 
     380      </item> 
     381      <item row="1" column="0"> 
     382       <widget class="QComboBox" name="comboPartition"> 
     383        <property name="sizePolicy"> 
     384         <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> 
     385          <horstretch>0</horstretch> 
     386          <verstretch>0</verstretch> 
     387         </sizepolicy> 
     388        </property> 
     389       </widget> 
     390      </item> 
     391      <item row="1" column="1"> 
     392       <widget class="QLabel" name="label_6"> 
     393        <property name="sizePolicy"> 
     394         <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> 
     395          <horstretch>0</horstretch> 
     396          <verstretch>0</verstretch> 
     397         </sizepolicy> 
     398        </property> 
     399        <property name="text"> 
     400         <string>Selected Partition</string> 
     401        </property> 
     402       </widget> 
     403      </item> 
     404     </layout> 
     405    </item> 
     406    <item row="8" column="1"> 
     407     <spacer name="verticalSpacer_6"> 
     408      <property name="orientation"> 
     409       <enum>Qt::Vertical</enum> 
     410      </property> 
     411      <property name="sizeHint" stdset="0"> 
     412       <size> 
     413        <width>387</width> 
     414        <height>43</height> 
     415       </size> 
     416      </property> 
     417     </spacer> 
     418    </item> 
     419    <item row="6" column="1"> 
     420     <widget class="QCheckBox" name="checkForce4K"> 
     421      <property name="text"> 
     422       <string>Force ZFS 4K block size</string> 
     423      </property> 
    417424     </widget> 
    418425    </item> 
  • src-sh/pc-sysinstall/backend/functions-newfs.sh

    r5c0de09 rfe5d5c8  
    6161  done  
    6262 
    63   # Check if we have some custom zpool arguments and use them if so 
    64   if [ ! -z "${ZPOOLOPTS}" ] ; then 
     63 
     64  # Are we going to skip the gnop trick? 
     65  if [ -z "$ZFSFORCE4K" ] ; then 
     66    if [ -n "${ZPOOLOPTS}" ] ; then 
     67      echo_log "Creating zpool ${ZPOOLNAME} with $ZPOOLOPTS" 
     68      rc_halt "zpool create -m none -f ${ZPOOLNAME} ${ZPOOLOPTS}" 
     69    else 
     70      # No zpool options, create pool on single device 
     71      echo_log "Creating zpool ${ZPOOLNAME} on ${PART}${EXT}" 
     72      rc_halt "zpool create -m none -f ${ZPOOLNAME} ${PART}${EXT}" 
     73    fi 
     74    return 0 
     75  fi 
     76 
     77  # We are doing the gnop trick! This breaks some cases with GRUB + GPT 
     78  if [ -n "${ZPOOLOPTS}" ] ; then 
    6579    # Sort through devices and run gnop on them 
    6680    local gnopDev="" 
  • src-sh/pc-sysinstall/backend/parseconfig.sh

    reec2eb4 rfe5d5c8  
    9595fi 
    9696 
     97# Check if we are going to force ZFS 4k sectors with gnop 
     98get_value_from_cfg zfsForce4k 
     99if [ -n "$VAL" ] ; then 
     100  export ZFSFORCE4K="${VAL}" 
     101fi 
     102 
    97103# Check if we are doing any networking setup 
    98104start_networking 
Note: See TracChangeset for help on using the changeset viewer.