Search This Blog

Monday, April 7, 2014

Eth0 Getting Incremented while Cloning

Hi everybody,
Today i came across a situation, that my network interface(s) number gets incremented when ever i clone my virtual machine (by virtual box or other means). For some or the other reason certain people do not like their interfaces to be changed.
   Started investigating the cause and found that udev was the daemon which increments the number on the interface. It has certain set of rules written which reinitiate the device number. Here is the small patch that can be handy for some users.

Note: These commands has to be performed as root

Step 1: Edit the file /lib/udev/write_net_rules and make the following changes

# vi /lib/udev/write_net_rules

Orginally looks like this

#!/bin/sh -e

# This script is run to create persistent network device naming rules
# based on properties of the device.
# If the interface needs to be renamed, INTERFACE_NEW=<name> will be printed
# on stdout to allow udev to IMPORT it.

# variables used to communicate:
#   MATCHADDR             MAC address used for the match
#   MATCHID               bus_id used for the match
#   MATCHDEVID            dev_id used for the match
#   MATCHDRV              driver name used for the match
#   MATCHIFTYPE           interface type match
#   COMMENT               comment to add to the generated rule
#   INTERFACE_NAME        requested name supplied by external tool
#   INTERFACE_NEW         new interface name returned by rule writer

# Copyright (C) 2006 Marco d'Itri <md@Linux.IT>
# Copyright (C) 2007 Kay Sievers <kay.sievers@vrfy.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# debug, if UDEV_LOG=<debug>
if [ -n "$UDEV_LOG" ]; then
if [ "$UDEV_LOG" -ge 7 ]; then
set -x
fi
fi

RULES_FILE='/etc/udev/rules.d/70-persistent-net.rules'
. /lib/udev/rule_generator.functions

interface_name_taken() {
local value="$(find_all_rules 'NAME=' $INTERFACE)"
if [ "$value" ]; then
return 0
else
return 1
fi
}

find_next_available() {
raw_find_next_available "$(find_all_rules 'NAME=' "$1")"
}

write_rule() {
local match="$1"
local name="$2"
local comment="$3"

{
if [ "$PRINT_HEADER" ]; then
PRINT_HEADER=
echo "# This file was automatically generated by the $0"
echo "# program, run by the persistent-net-generator.rules rules file."
echo "#"
echo "# You can modify it, as long as you keep each rule on a single"
echo "# line, and change only the value of the NAME= key."
fi

echo ""
[ "$comment" ] && echo "# $comment"
echo "SUBSYSTEM==\"net\", ACTION==\"add\"$match, NAME=\"$name\""
} >> $RULES_FILE
}

if [ -z "$INTERFACE" ]; then
echo "missing \$INTERFACE" >&2
exit 1
fi

# Prevent concurrent processes from modifying the file at the same time.
lock_rules_file

# Check if the rules file is writeable.
choose_rules_file

# the DRIVERS key is needed to not match bridges and VLAN sub-interfaces
if [ "$MATCHADDR" ]; then
match="$match, DRIVERS==\"?*\", ATTR{address}==\"$MATCHADDR\""
fi

if [ "$MATCHDRV" ]; then
match="$match, DRIVERS==\"$MATCHDRV\""
fi

if [ "$MATCHDEVID" ]; then
match="$match, ATTR{dev_id}==\"$MATCHDEVID\""
fi

if [ "$MATCHID" ]; then
match="$match, KERNELS==\"$MATCHID\""
fi

if [ "$MATCHIFTYPE" ]; then
match="$match, ATTR{type}==\"$MATCHIFTYPE\""
fi

if [ -z "$match" ]; then
echo "missing valid match" >&2
unlock_rules_file
exit 1
fi

basename=${INTERFACE%%[0-9]*}
match="$match, KERNEL==\"$basename*\""

if [ "$INTERFACE_NAME" ]; then
# external tools may request a custom name
COMMENT="$COMMENT (custom name provided by external tool)"
if [ "$INTERFACE_NAME" != "$INTERFACE" ]; then
INTERFACE=$INTERFACE_NAME;
echo "INTERFACE_NEW=$INTERFACE"
fi
else
# if a rule using the current name already exists, find a new name
if interface_name_taken; then
INTERFACE="$basename$(find_next_available "$basename[0-9]*")"
# prevent INTERFACE from being "eth" instead of "eth0"
[ "$INTERFACE" = "${INTERFACE%%[ \[\]0-9]*}" ] && INTERFACE=${INTERFACE}0
echo "INTERFACE_NEW=$INTERFACE"
fi
fi

write_rule "$match" "$INTERFACE" "$COMMENT"

unlock_rules_file

exit 0


Change it as follows

#!/bin/sh -e

# This script is run to create persistent network device naming rules
# based on properties of the device.
# If the interface needs to be renamed, INTERFACE_NEW=<name> will be printed
# on stdout to allow udev to IMPORT it.

# variables used to communicate:
#   MATCHADDR             MAC address used for the match
#   MATCHID               bus_id used for the match
#   MATCHDEVID            dev_id used for the match
#   MATCHDRV              driver name used for the match
#   MATCHIFTYPE           interface type match
#   COMMENT               comment to add to the generated rule
#   INTERFACE_NAME        requested name supplied by external tool
#   INTERFACE_NEW         new interface name returned by rule writer

# Copyright (C) 2006 Marco d'Itri <md@Linux.IT>
# Copyright (C) 2007 Kay Sievers <kay.sievers@vrfy.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# debug, if UDEV_LOG=<debug>
if [ -n "$UDEV_LOG" ]; then
if [ "$UDEV_LOG" -ge 7 ]; then
set -x
fi
fi

RULES_FILE='/etc/udev/rules.d/70-persistent-net.rules'
dnc='/etc/udev/rules.d/dnc-network'
. /lib/udev/rule_generator.functions

interface_name_taken() {
local value="$(find_all_rules 'NAME=' $INTERFACE)"
if [ "$value" ]; then
return 0
else
return 1
fi
}

find_next_available() {
raw_find_next_available "$(find_all_rules 'NAME=' "$1")"
}

write_rule() {
local match="$1"
local name="$2"
local comment="$3"

{
if [ "$PRINT_HEADER" ]; then
PRINT_HEADER=
echo "# This file was automatically generated by the $0"
echo "# program, run by the persistent-net-generator.rules rules file."
echo "#"
echo "# You can modify it, as long as you keep each rule on a single"
echo "# line, and change only the value of the NAME= key."
fi

echo ""
[ "$comment" ] && echo "# $comment"
echo "SUBSYSTEM==\"net\", ACTION==\"add\"$match, NAME=\"$name\""
} >> $RULES_FILE
}

if [ -z "$INTERFACE" ]; then
echo "missing \$INTERFACE" >&2
exit 1
fi

# Prevent concurrent processes from modifying the file at the same time.
lock_rules_file

# Check if the rules file is writeable.
choose_rules_file

# the DRIVERS key is needed to not match bridges and VLAN sub-interfaces
if [ "$MATCHADDR" ]; then
match="$match, DRIVERS==\"?*\", ATTR{address}==\"$MATCHADDR\""
fi

if [ "$MATCHDRV" ]; then
match="$match, DRIVERS==\"$MATCHDRV\""
fi

if [ "$MATCHDEVID" ]; then
match="$match, ATTR{dev_id}==\"$MATCHDEVID\""
fi

if [ "$MATCHID" ]; then
match="$match, KERNELS==\"$MATCHID\""
fi

if [ "$MATCHIFTYPE" ]; then
match="$match, ATTR{type}==\"$MATCHIFTYPE\""
fi

if [ -z "$match" ]; then
echo "missing valid match" >&2
unlock_rules_file
exit 1
fi

basename=${INTERFACE%%[0-9]*}
match="$match, KERNEL==\"$basename*\""

if [ "$INTERFACE_NAME" ]; then
# external tools may request a custom name
COMMENT="$COMMENT (custom name provided by external tool)"
if [ "$INTERFACE_NAME" != "$INTERFACE" ]; then
INTERFACE=$INTERFACE_NAME;
echo "INTERFACE_NEW=$INTERFACE"
fi
else
# if a rule using the current name already exists, find a new name
if interface_name_taken; then
  if ! [ -e $dnc ]; then
INTERFACE="$basename$(find_next_available "$basename[0-9]*")"
# prevent INTERFACE from being "eth" instead of "eth0"
[ "$INTERFACE" = "${INTERFACE%%[ \[\]0-9]*}" ] && INTERFACE=${INTERFACE}0
echo "INTERFACE_NEW=$INTERFACE"
  fi
fi
fi

write_rule "$match" "$INTERFACE" "$COMMENT"

unlock_rules_file

exit 0


Step 2: Create a file named /etc/udev/rules.d/dnc-network

# touch /etc/udev/rules.d/dnc-network

Step 3: Shutdown the virtual machine and clone the machine to test

Enjoy :)

Friday, March 7, 2014

Seagate Backup Plus Not Getting Detected in Linux

Hi all,

Today i just bought my brand new Seagate backup plus 1 TB external hard disk and i was shocked when it did not get detected in my Linux PC. At first i was thinking, there was some fault with the drive and i almost started checking the process for claiming warranty.

Suddenly something stuck me, thought to check it over windows and mac and to my surprise it worked great. So then googled over net and found that Seagate backup plus does not support for Linux.

Some investigation on dmesg


[2610653.068031] usb 2-6: new high-speed USB device number 5 using ehci_hcd
[2610653.201801] usb 2-6: New USB device found, idVendor=0bc2, idProduct=a013
[2610653.201804] usb 2-6: New USB device strings: Mfr=2, Product=3, SerialNumber=1
[2610653.201806] usb 2-6: Product: Backup+ BK
[2610653.201807] usb 2-6: Manufacturer: Seagate
[2610653.201808] usb 2-6: SerialNumber: NA5CME4T
[2610653.202497] scsi7 : uas
[2610653.203558] scsi 7:0:0:0: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610659.808099] scsi 7:0:0:0: uas_eh_abort_handler tag 0
[2610659.808105] scsi 7:0:0:0: uas_eh_device_reset_handler tag 0
[2610659.808108] scsi 7:0:0:0: uas_eh_target_reset_handler tag 0
[2610659.808111] scsi 7:0:0:0: uas_eh_bus_reset_handler tag 0
[2610659.920091] usb 2-6: reset high-speed USB device number 5 using ehci_hcd
[2610660.053560] scsi 7:0:0:0: Device offlined - not ready after error recovery
[2610660.053581] scsi 7:0:0:0: rejecting I/O to offline device
[2610660.053589] scsi 7:0:0:0: rejecting I/O to offline device
[2610660.054693] scsi 7:0:0:1: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610660.055693] scsi 7:0:0:2: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610660.056694] scsi 7:0:0:3: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610660.057691] scsi 7:0:0:4: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610660.058691] scsi 7:0:0:5: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610660.059691] scsi 7:0:0:6: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610660.060693] scsi 7:0:0:7: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610660.061185] sd 7:0:0:0: Attached scsi generic sg2 type 0
[2610660.061637] sd 7:0:0:1: Attached scsi generic sg3 type 0
[2610660.062191] sd 7:0:0:2: Attached scsi generic sg4 type 0
[2610660.062493] sd 7:0:0:3: Attached scsi generic sg5 type 0
[2610660.062727] sd 7:0:0:4: Attached scsi generic sg6 type 0
[2610660.062963] sd 7:0:0:5: Attached scsi generic sg7 type 0
[2610660.063257] sd 7:0:0:6: Attached scsi generic sg8 type 0
[2610660.063516] sd 7:0:0:7: Attached scsi generic sg9 type 0
[2610690.848080] sd 7:0:0:2: uas_eh_abort_handler tag 0
[2610690.848084] sd 7:0:0:3: uas_eh_abort_handler tag 0
[2610690.848086] sd 7:0:0:4: uas_eh_abort_handler tag 0
[2610690.848088] sd 7:0:0:5: uas_eh_abort_handler tag 0
[2610690.848090] sd 7:0:0:6: uas_eh_abort_handler tag 0
[2610690.848093] sd 7:0:0:7: uas_eh_abort_handler tag 0
[2610690.848095] sd 7:0:0:0: uas_eh_abort_handler tag 0
[2610690.848097] sd 7:0:0:1: uas_eh_abort_handler tag 0
[2610690.848105] sd 7:0:0:0: uas_eh_device_reset_handler tag 0
[2610690.848108] sd 7:0:0:1: uas_eh_device_reset_handler tag 0
[2610690.848110] sd 7:0:0:2: uas_eh_device_reset_handler tag 0
[2610690.848112] sd 7:0:0:3: uas_eh_device_reset_handler tag 0
[2610690.848115] sd 7:0:0:4: uas_eh_device_reset_handler tag 0
[2610690.848117] sd 7:0:0:5: uas_eh_device_reset_handler tag 0
[2610690.848119] sd 7:0:0:6: uas_eh_device_reset_handler tag 0
[2610690.848122] sd 7:0:0:7: uas_eh_device_reset_handler tag 0
[2610690.848124] sd 7:0:0:2: uas_eh_target_reset_handler tag 0
[2610690.848127] sd 7:0:0:1: uas_eh_bus_reset_handler tag 0
[2610690.960091] usb 2-6: reset high-speed USB device number 5 using ehci_hcd
[2610691.093310] sd 7:0:0:1: Device offlined - not ready after error recovery
[2610691.093313] sd 7:0:0:0: Device offlined - not ready after error recovery
[2610691.093315] sd 7:0:0:7: Device offlined - not ready after error recovery
[2610691.093317] sd 7:0:0:6: Device offlined - not ready after error recovery
[2610691.093318] sd 7:0:0:5: Device offlined - not ready after error recovery
[2610691.093320] sd 7:0:0:4: Device offlined - not ready after error recovery
[2610691.093322] sd 7:0:0:3: Device offlined - not ready after error recovery
[2610691.093324] sd 7:0:0:2: Device offlined - not ready after error recovery
[2610691.093347] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093355] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093358] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093361] sd 7:0:0:0: [sdc] READ CAPACITY(16) failed
[2610691.093364] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093364] sd 7:0:0:0: [sdc]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093369] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093369] sd 7:0:0:0: [sdc] Sense not available.
[2610691.093372] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093374] sd 7:0:0:1: [sdd] READ CAPACITY(16) failed
[2610691.093374] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093378] sd 7:0:0:1: [sdd]  
[2610691.093378] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093382] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093382] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093385] sd 7:0:0:1: [sdd] Sense not available.
[2610691.093386] sd 7:0:0:0: [sdc] READ CAPACITY failed
[2610691.093387] sd 7:0:0:0: [sdc]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093390] sd 7:0:0:0: [sdc] Sense not available.
[2610691.093394] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093394] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093397] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093400] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093403] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093403] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093405] sd 7:0:0:0: [sdc] Write Protect is off
[2610691.093408] sd 7:0:0:1: [sdd] READ CAPACITY failed
[2610691.093410] sd 7:0:0:1: [sdd]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093413] sd 7:0:0:1: [sdd] Sense not available.
[2610691.093413] sd 7:0:0:0: [sdc] Mode Sense: 00 00 00 00
[2610691.093416] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093418] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093421] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093422] sd 7:0:0:0: [sdc] Asking for cache data failed
[2610691.093426] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093426] sd 7:0:0:0: [sdc] Assuming drive cache: write through
[2610691.093429] sd 7:0:0:1: [sdd] Write Protect is off
[2610691.093431] sd 7:0:0:1: [sdd] Mode Sense: 00 00 00 00
[2610691.093434] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093436] sd 7:0:0:1: [sdd] Asking for cache data failed
[2610691.093437] sd 7:0:0:1: [sdd] Assuming drive cache: write through
[2610691.093479] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093482] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093485] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093487] sd 7:0:0:6: [sdi] READ CAPACITY(16) failed
[2610691.093488] sd 7:0:0:6: [sdi]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093491] sd 7:0:0:6: [sdi] Sense not available.
[2610691.093491] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093494] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093497] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093497] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093500] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093503] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093505] sd 7:0:0:6: [sdi] READ CAPACITY failed
[2610691.093506] sd 7:0:0:7: [sdj] READ CAPACITY(16) failed
[2610691.093507] sd 7:0:0:7: [sdj]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093510] sd 7:0:0:7: [sdj] Sense not available.
[2610691.093513] sd 7:0:0:6: [sdi]  
[2610691.093513] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093517] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093517] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093520] sd 7:0:0:6: [sdi] Sense not available.
[2610691.093520] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093522] sd 7:0:0:7: [sdj] READ CAPACITY failed
[2610691.093525] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093526] sd 7:0:0:7: [sdj]  
[2610691.093528] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093529] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093532] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093532] sd 7:0:0:7: [sdj] Sense not available.
[2610691.093535] sd 7:0:0:6: [sdi] Write Protect is off
[2610691.093537] sd 7:0:0:6: [sdi] Mode Sense: 00 00 00 00
[2610691.093540] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093540] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093544] sd 7:0:0:6: [sdi] Asking for cache data failed
[2610691.093544] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093548] sd 7:0:0:6: [sdi] Assuming drive cache: write through
[2610691.093548] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093550] sd 7:0:0:7: [sdj] Write Protect is off
[2610691.093552] sd 7:0:0:7: [sdj] Mode Sense: 00 00 00 00
[2610691.093554] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093556] sd 7:0:0:7: [sdj] Asking for cache data failed
[2610691.093557] sd 7:0:0:7: [sdj] Assuming drive cache: write through
[2610691.093568] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093571] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093574] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093576] sd 7:0:0:4: [sdg] READ CAPACITY(16) failed
[2610691.093577] sd 7:0:0:4: [sdg]  
[2610691.093577] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093581] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093581] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093584] sd 7:0:0:4: [sdg] Sense not available.
[2610691.093584] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093587] sd 7:0:0:5: [sdh] READ CAPACITY(16) failed
[2610691.093590] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093590] sd 7:0:0:5: [sdh]  
[2610691.093593] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093593] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093596] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093597] sd 7:0:0:5: [sdh] Sense not available.
[2610691.093600] sd 7:0:0:4: [sdg] READ CAPACITY failed
[2610691.093602] sd 7:0:0:4: [sdg]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093604] sd 7:0:0:4: [sdg] Sense not available.
[2610691.093607] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093607] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093609] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093613] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093616] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093616] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093618] sd 7:0:0:5: [sdh] READ CAPACITY failed
[2610691.093621] sd 7:0:0:4: [sdg] Write Protect is off
[2610691.093623] sd 7:0:0:4: [sdg] Mode Sense: 00 00 00 00
[2610691.093623] sd 7:0:0:5: [sdh]  
[2610691.093626] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093627] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093630] sd 7:0:0:4: [sdg] Asking for cache data failed
[2610691.093632] sd 7:0:0:4: [sdg] Assuming drive cache: write through
[2610691.093632] sd 7:0:0:5: [sdh] Sense not available.
[2610691.093634] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093637] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093640] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093642] sd 7:0:0:5: [sdh] Write Protect is off
[2610691.093644] sd 7:0:0:5: [sdh] Mode Sense: 00 00 00 00
[2610691.093646] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093648] sd 7:0:0:5: [sdh] Asking for cache data failed
[2610691.093650] sd 7:0:0:5: [sdh] Assuming drive cache: write through
[2610691.093657] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093660] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093663] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093665] sd 7:0:0:3: [sdf] READ CAPACITY(16) failed
[2610691.093666] sd 7:0:0:3: [sdf]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093670] sd 7:0:0:3: [sdf] Sense not available.
[2610691.093692] sd 7:0:0:2: rejecting I/O to offline device
[2610691.093695] sd 7:0:0:2: rejecting I/O to offline device
[2610691.093697] sd 7:0:0:2: rejecting I/O to offline device
[2610691.093700] sd 7:0:0:2: [sde] READ CAPACITY(16) failed
[2610691.093701] sd 7:0:0:2: [sde]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093703] sd 7:0:0:2: [sde] Sense not available.
[2610691.093705] sd 7:0:0:2: rejecting I/O to offline device
[2610691.093975] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093979] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093982] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093984] sd 7:0:0:3: [sdf] READ CAPACITY failed
[2610691.093986] sd 7:0:0:3: [sdf]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093988] sd 7:0:0:3: [sdf] Sense not available.
[2610691.093990] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093993] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093996] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093998] sd 7:0:0:3: [sdf] Write Protect is off
[2610691.094000] sd 7:0:0:3: [sdf] Mode Sense: 00 00 00 00
[2610691.094002] sd 7:0:0:3: rejecting I/O to offline device
[2610691.094004] sd 7:0:0:3: [sdf] Asking for cache data failed
[2610691.094005] sd 7:0:0:3: [sdf] Assuming drive cache: write through
[2610691.094022] sd 7:0:0:2: rejecting I/O to offline device
[2610691.094025] sd 7:0:0:2: rejecting I/O to offline device
[2610691.094027] sd 7:0:0:2: [sde] READ CAPACITY failed
[2610691.094029] sd 7:0:0:2: [sde]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.094031] sd 7:0:0:2: [sde] Sense not available.
[2610691.094033] sd 7:0:0:2: rejecting I/O to offline device
[2610691.094035] sd 7:0:0:2: rejecting I/O to offline device
[2610691.094038] sd 7:0:0:2: rejecting I/O to offline device
[2610691.094040] sd 7:0:0:2: [sde] Write Protect is off
[2610691.094042] sd 7:0:0:2: [sde] Mode Sense: 00 00 00 00
[2610691.094044] sd 7:0:0:2: rejecting I/O to offline device
[2610691.094054] sd 7:0:0:2: [sde] Asking for cache data failed
[2610691.094056] sd 7:0:0:2: [sde] Assuming drive cache: write through
[2610691.094078] sd 7:0:0:7: [sdj] Attached SCSI disk
[2610691.094692] sd 7:0:0:2: [sde] Attached SCSI disk
[2610691.094822] sd 7:0:0:5: [sdh] Attached SCSI disk
[2610691.094859] sd 7:0:0:6: [sdi] Attached SCSI disk
[2610691.094894] sd 7:0:0:1: [sdd] Attached SCSI disk
[2610691.094951] sd 7:0:0:0: [sdc] Attached SCSI disk
[2610691.095008] sd 7:0:0:3: [sdf] Attached SCSI disk
[2610691.095044] sd 7:0:0:4: [sdg] Attached SCSI disk



So here is the procedure to make it detect on a Linux PC.

There is a kernel module called UAC, which is the culprit. Disabling the kernel module, made my disk getting detected.

# rmmod uac

unplug and plug hard disk and it gets detected.
Its simple :)

Saturday, January 18, 2014

Postgreql - Import All Tables to CSV

Hi all,
Today  i came across a situation where i need to import and export csv to postgresql db and to migrate all tables in a db to csv format. Lets see what i did,

Step 1: Change to 'postgres user'

# su postgres

Step 2: Login to a database (In my case i used a local database to test)

# psql <database name>

Example:
# psql testdb

Step 3: Lets see how to export just one table

# COPY <table name> to '/path/to/csv file' delimeters',';

Example:
# COPY zones to '/tmp/test.csv' delimeters',';

Step 4: Lets see how to import from csv

# COPY <table name> from '/path/to/csv file' delimeters',';

Example:
# COPY zones from '/tmp/test.csv' delimeters',';

Step 4: Lets see how to import all tables in a database. For that we need to create a function like below

# CREATE OR REPLACE FUNCTION all_csv(path TEXT) RETURNS void AS $$
   declare
      tables RECORD;
      statement TEXT;
   begin
      FOR tables IN 
         SELECT (table_schema || '.' || table_name) AS schema_table
         FROM information_schema.tables t INNER JOIN information_schema.schemata s 
         ON s.schema_name = t.table_schema 
         WHERE t.table_schema NOT IN ('pg_catalog', 'information_schema', 'configuration')
         ORDER BY schema_table
     LOOP
     statement := 'COPY ' || tables.schema_table || ' TO ''' || path || '/' || tables.schema_table || '.csv' ||'''          DELIMITER '';'' CSV HEADER';
         EXECUTE statement;
     END LOOP;
     return;  
     end;
     $$ LANGUAGE plpgsql;

Next we can use the above function to export to a folder

# SELECT all_csv('/path/to/directiry');

example:
SELECT all_csv('/tmp/tt');

Thats it, we are done. Enjoy with your work....

Tuesday, December 17, 2013

Shared Storage with OCFS2

Hi Friends,
How is it going ? Well today i am here to share with you how to share your shared storage (SAN in shared mode or shared iscsi lun ) across multiple nodes. Here we go

Do these steps on all nodes you wish to have shared storage

Step 1: Install ocfs2 tools on each of the nodes. Lets me assume you have debian based distro. Use relative commands for other distro

# apt-get install ocfs2-tools ocfs2console

Step 2: Edit default configuration file and enable O2CB

# vi /etc/default/o2cb

change

O2CB_ENABLED = false

to

O2CB_ENABLED = true

Step 3: Create the clustering configuration

# vi /etc/ocfs2/cluster.conf

Add these contents

node:
        ip_port = 7777
        ip_address = <node 1 ip>
        number = 1
        name = <node 1 host name>
        cluster = ocfs2
node:
        ip_port = 7777
        ip_address = <node 2 ip>
        number = 2
        name = <node 2 host name>
        cluster = ocfs2
cluster:
        node_count = 2
        name = ocfs2

Here
        <node # ip> is the node ip
        <node # host name> is the host name of node

I have assumed that my cluster consists of 2 nodes. If there are more nodes add more node parameter group and change node_count = <total of nodes in the cluster>

Step 4: start or restart o2cb service

# /etc/init.d/o2cb restart

Step 5: Change vm.dirty_ratio to reduce caching of files as it would create some lag in shared cluster.

# vi /etc/sysctl.conf

Add this line to the end of file, if it does not exists anywhere in the file

vm.dirty_ratio=10

Save the file and exit

Step 6: This step is performed on only one of the nodes. Here we format the file system to ocfs2 format

# mkfs.ocfs2 -b 4k -C 32k -L <any cluster name> -N <max no. of nodes> /dev/<shared device path>

example

# mkfs.ocfs2 -b 4k -C 32k  -L "cluster-storage" -N2 /dev/sdb1

Step 7: Perform the following steps on all nodes

# modprobe ocfs2_stackglue

Mount the shared partition on all nodes

# mount /dev/<shared device path> <mount point>

example

# mount /dev/sdb1 /mnt/

Step 8: Testing the shared storage

# touch <mounted location>/a

list it across all the other nodes

# ls <mounted location>

You must be able to see the shared data on all nodes :)

Sunday, December 15, 2013

Solution to Problem installing BCM Wireless drivers in linux

Hi All,
This is another page i write today which might help few people like me who struggled installing bcm wireless drivers on linux (debian). It may work for other flavors too. So steps are as follows.

Get to the terminal as root user and typw,

# lspci

and if you find something like this on the output of the command

Network controller: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller (rev 01)

Then this solution might help you.

Download the bcm drivers from (choose your architecture)

http://www.broadcom.com/support/802.11/linux_sta.php

Also download the patch from the following site


Get to the folder where you downloaded the drivers

# cd <download driver>

Extract the driver and apply the patch

# tar zxvf <downloaded file name>
# cd <extracted folder>
# mv <patch> .
# patch -p0 src/wl/sys/wl_linux.c < bc_wl_abiupdate.patch

Compile the drivers

# make
# make install

Insert the module

# insmod /lib/modules/`uname -r`/wl.ko
# modprobe wl

There you go

Your wireless drivers are up. Tadaaaaaaaaaaa 

Thursday, June 27, 2013

Mounting VHD Image file in Linux

Back again,

So i have been playing around with so called VHD based image for a while. Here came the requirement, where i needed to mount this image and push in some keys... This is the solution i found

Step 1: Install the virtualbox fuse package which is required to open up this vhd image into its raw form

# apt-get install virtualbox-fuse

Step 2: Open up VHD image

# vdfuse -w -f <path to vhd image> <path to mount point>

Step 3: Check the extracted Files

# ls <path to mount point>

Here it could list either 

# EntireDisk

Lets mark this CASE 1

     (or)

# EntireDisk Partition1 Partion2 . ...

Depending on the number of partitions made on the Disk while creating and lets mark this as CASE 2

Step 4: Mount the extracted RAW image

# mount <path to vhd image>/EntireDisk <path to one more new mount point path>

In case of CASE 1

     (or)

# mount <path to vhd image>/Partition1 <path to one more new mount point>

In case of CASE 2
Partition here could be the one you wanted to mount

Step 5: unmounting the IMG and VHD after usage

# umount <path to mounted IMG partition>

# umount <path to vhd image>

Hope this is useful for all of you who see this :)

Tuesday, April 9, 2013

XCP hidden console

Hi all,

    Today am gonna introduce a hidden command on XCP's "xe tool stack"
Most of you who are familiar with xen's, xm console command, might wonder why such a command is missing in xe toolstack.

For those of you who wonder,
yes, xe tool-stack does have such a command, but it is hidden from help option.

So, you can access your VM, if you know its uuid

# xe console uuid=<uuid of VM>