Alan Curry | 6 Aug 2012 04:02

Oops in loop_clr_fd => bd_set_size

I got an Oops from running "losetup -d /dev/loop2". The trace shows
loop_clr_fd calling bd_set_size, and the parameter bdev appears to have a
NULL in its bd_disk field.

The losetup command was run as part of a script that did this:
  losetup -d /dev/loop5
  losetup -d /dev/loop4
  losetup -d /dev/loop3
  losetup -d /dev/loop2
  losetup -d /dev/loop1
The kernel was processing a lot of loop_clr_fd's in a quick sequence. The
first three worked, and the loop2 Oopsed.

After that I ran the losetup -d /dev/loop1 separately and it worked. The
process that caused the Oops didn't die:
  PID TTY      STAT   TIME COMMAND
 5055 pts/1    D      0:00 [losetup]

I also tried to query the current state of the device with "losetup loop2"
after the Oops. That gave me a second stuck process:
  PID TTY      STAT   TIME COMMAND
 5059 pts/1    D+     0:00 losetup /dev/loop2

These processes are still alive, in their permanent D state. The rest of
the system is still functional. I'll try to keep it that way for now, in
case anyone wants to suggest some debugging actions that I can take.

The loop devices were set up to handle an unusual situation: I have a whole
hard drive image contained within a partition on another hard drive. Each
loop device corresponds to a partition of the imaged drive. They were set
(Continue reading)

Anatol Pomozov | 1 Apr 2013 14:07
Picon
Gravatar

Re: Oops in loop_clr_fd => bd_set_size

Hi

On Sun, Aug 5, 2012 at 7:02 PM, Alan Curry <pacman <at> kosh.dhis.org> wrote:
> I got an Oops from running "losetup -d /dev/loop2". The trace shows
> loop_clr_fd calling bd_set_size, and the parameter bdev appears to have a
> NULL in its bd_disk field.
>
> The losetup command was run as part of a script that did this:
>   losetup -d /dev/loop5
>   losetup -d /dev/loop4
>   losetup -d /dev/loop3
>   losetup -d /dev/loop2
>   losetup -d /dev/loop1
> The kernel was processing a lot of loop_clr_fd's in a quick sequence. The
> first three worked, and the loop2 Oopsed.
>
> After that I ran the losetup -d /dev/loop1 separately and it worked. The
> process that caused the Oops didn't die:
>   PID TTY      STAT   TIME COMMAND
>  5055 pts/1    D      0:00 [losetup]
>
> I also tried to query the current state of the device with "losetup loop2"
> after the Oops. That gave me a second stuck process:
>   PID TTY      STAT   TIME COMMAND
>  5059 pts/1    D+     0:00 losetup /dev/loop2
>
> These processes are still alive, in their permanent D state. The rest of
> the system is still functional. I'll try to keep it that way for now, in
> case anyone wants to suggest some debugging actions that I can take.
>
(Continue reading)


Gmane