I am stuck with this problem from quite a long time. So, any help is
I am trying trying to do File transfer over Ethernet using my own protocol
type (non-IP). A small description is provided in the end FYI.
The receiver craps out for large transfers. I just happened to get this
message today, which gave more insight to the problem.
At the receiver, I get the following message
" kmem_grow: Called nonatomically from int - buffer_head "
This I figured was because, I was writing to the file in Bottom-half
context, which is why kmem_cache_grow() gives the following message.
So, small transfers go through fine, but large transfers have a problem.
I even tried setting the flags to SLAB_ATOMIC if kmem_cache_grow() was
called in interrupt context, but even with this, it fails.
Could anyone suggest how can I overcome this problem.
Sender : At the sender, I read data using generic_file_read(), packetize,
frame the Ethernet header (tag it with my own packet type) and
hand the packet over to ethernet driver through dev_queue_xmit().
Receiver : When the Ethernet driver hands the packet to me through
net_bh(), I queue the packet and return the control. I have my
own bottom half which services this queue and writes to the
file using a routine similar to ext2_file_write().
Since I am writing to the file in the bottom-half context,
kmem_cache_alloc() fails for large data sets.
I have sent two other mails. In case you need to look at it for more
details, here are the URLs from the mailing list archive.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to firstname.lastname@example.org
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Wed May 31 2000 - 21:00:15 EST